Opération binaire sur une variable de type QWord
Bonjour !
Je voudrais apprendre la technique des damiers binaires (c'est comme ça que je traduirais bitboard).
Pour commencer j'ai voulu écrire un petit programme mettant en œuvre l'exemple présenté sur cette page.
Ça commence mal. Dès le début j'obtiens un résultat inattendu. :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| {$mode objfpc}
var
damier: qword;
i: integer;
begin
damier := %0000000000000000000000000000000000000000000000001111111111111111;
for i := 0 to 63 do
if (damier and (1 shl i)) > 0 then
Write('1')
else
Write('0');
end.
// 1111111111111111000000000000000011111111111111110000000000000000 |
Qu'est-ce qui ne va pas dans mon code ? Pourquoi la chaîne affichée ne correspond-elle pas aux chiffres binaires de la valeur en question ?
D'autres liens intéressants pour la suite de la discussion :
https://www.chessprogramming.org/Bitboards
http://pages.cs.wisc.edu/~psilord/bl...ges/index.html