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 : Sélectionner tout - Visualiser dans une fenêtre à part
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