?? 數據結構——旋轉的位棋盤.htm
字號:
<DD>} </DD></DL>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>
<P align=center>需要右移的位數</P></TD></TR>
<TR>
<TD align=middle>
<TABLE border=1>
<TBODY>
<TR>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>0</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>1</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>3</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>6</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>10</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>15</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>1</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>3</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>6</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>10</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>15</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>3</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>6</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>10</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>15</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>43</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>6</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>10</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>15</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>43</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>49</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>10</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>15</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>43</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>49</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>54</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>15</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>43</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>49</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>54</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>58</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>21</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>43</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>49</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>54</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>58</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>61</STRONG></FONT></TD></TR>
<TR>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>28</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>36</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>43</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>49</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>54</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>58</STRONG></FONT></TD>
<TD align=middle bgColor=#000000><FONT face="Times New Roman"
color=#ffffff><STRONG>61</STRONG></FONT></TD>
<TD align=middle bgColor=#ffffff><FONT
face="Times New Roman"><STRONG>63</STRONG></FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<DL>
<DT> 最后,像對第一根斜線所做的那樣,分離出所需數據。
<DT> 對這兩個位棋盤做“邏輯或”,便得到記錄受象攻擊的格子的位棋盤。
<DT>
<DD>bishop_attack = diag_A8H1_attacks | diag_H8A1_attacks;
<DT>
<DT> 最后,要得到受皇后攻擊的格子的位棋盤,只要把受車攻擊的格子“或”上受象攻擊的格子:
<DT>
<DD>queen_attack = rook_attack | bishop_attack;
<DT>
<DT><FONT color=#ff0000> 【一位網友來信說他剖析過 </FONT><FONT face="Times New Roman"
color=#ff0000>Galahad </FONT><FONT
color=#ff0000>的源程序,程序中并未發現“旋轉的位棋盤”的算法,而采用一種“位行”</FONT><FONT
face="Times New Roman" color=#ff0000>(BitRank)</FONT><FONT
color=#ff0000>和“位列”</FONT><FONT face="Times New Roman"
color=#ff0000>(BitFile)</FONT><FONT color=#ff0000>的結構。正擺的位棋盤實際上就是把</FONT><FONT
face="Times New Roman" color=#ff0000>8</FONT><FONT
color=#ff0000>個位行連在一起形成的,而旋轉</FONT><FONT face="Times New Roman"
color=#ff0000>90</FONT><FONT color=#ff0000>度的位棋盤則是由</FONT><FONT
face="Times New Roman" color=#ff0000>8</FONT><FONT
color=#ff0000>個位列連在一起的,至于旋轉</FONT><FONT face="Times New Roman"
color=#ff0000>45</FONT><FONT color=#ff0000>度和</FONT><FONT
face="Times New Roman" color=#ff0000>315</FONT><FONT
color=#ff0000>度的位棋盤,實際上也只需要用兩套</FONT><FONT face="Times New Roman"
color=#ff0000>15</FONT><FONT
color=#ff0000>個的“位斜線”就可以了。比起位行和位列操作,通過位移運算從位棋盤中析取某行或某列,就顯得多此一舉了,因此它的效遠遠沒有位行和位列高。而旋轉的位棋盤這種炫技,它的作用僅僅是誤導一下象棋引擎設計師而已。】</FONT>
<DT>
<DT> 出處:不詳
<DT> 譯者:<FONT face="Times New Roman">Allen Liu (</FONT><A
href="mailto:ditch_u@yahoo.com"><FONT
face="Times New Roman">ditch_u@yahoo.com</FONT></A>,<A
href="http://lostboy.myrice.com/home.htm" target=_blank><FONT
face="Times New Roman"
color=#0000ff>http://lostboy.myrice.com/</FONT></A><FONT
face="Times New Roman">)</FONT>
<DT> 類型:不詳
<DT> 編輯:黃晨 <FONT face="Times New Roman">(</FONT><A
href="mailto:webmaster@elephantbase.net"><FONT
face="Times New Roman">webmaster@elephantbase.net</FONT></A><FONT
face="Times New Roman">)</FONT> </DT></DL>
<DIR>
<LI>上一篇 <A
href="http://www.elephantbase.net/computer/struct_bitboard.htm">數據結構——位棋盤</A>
<LI>下一篇 <A
href="http://www.elephantbase.net/computer/struct_movegen.htm">數據結構——著法生成器</A>
<LI>返 回 <A href="http://www.elephantbase.net/computer.htm">象棋百科全書——電腦象棋</A>
</LI></DIR>
<DIV align=center>
<CENTER>
<TABLE border=0>
<TBODY>
<TR>
<TD>
<P align=center><A href="http://www.elephantbase.net/" target=_blank><IMG
height=31 src="數據結構——旋轉的位棋盤_files/elephantbase.gif" width=88
border=0></A></P></TD></TR>
<TR>
<TD><A href="http://www.elephantbase.net/" target=_blank><FONT face=Arial
size=2><STRONG>www.elephantbase.net</STRONG></FONT></A></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -