[Python] operazioni bitwise

Carlo C8E Miron carlo.miron a gmail.com
Lun 30 Lug 2007 14:07:25 CEST


On 7/29/07, karpov74 <karpov74 a yahoo.it> wrote:
> ...sono alle prese con la programmazione di un chess engine in python.
>
> premesso che sono un principiante, ho un problema.
>
> voglio rappresentare la scacchiera tramite le bitboard, e sto
> utilizzando gli operatori:
>
> and     & (bitwise and)
> or     | (bitwise or)
> xor     ^ (bitwise xor)
> not     ~ (bitwise not)
> ishft(a, 1)     a << 1 (left shift)
> ishft(a,-1)     a >> 1 (right shift)
>
> facendo delle prove ottengo questi risultati con python:
>
> 0110 & 1010 = 1000000
>
> 0110 | 1010 = 1111111010
>
> 0110 ^ 1010 = 1110111010
>
> 0010 << 100000
>
> in realtà io mi aspetterei che:
>
>
> 0110 & 1010 = 0010
>
> 0110 | 1010 = 1110
>
> 0110 ^ 1010 = 1100
>
> 0010 << 1000
>
> dove sbaglio??

Candeggio? ;o)
Non ho un python sottomano per verificare, ma suppongo che tu stia
effettuando le tue operazioni su costanti ottali (quelle che
cominciano con 0) e decimali, e non - come probabilmente ti attendi -
in binario.

Negli attuali python non esiste "zucchero sintattico" per le costanti
binarie, puoi usare int("0110", 2).

HTH, HAND

(c)
-- 
Carlo C8E Miron
Binary Numbers Solution Architect


Maggiori informazioni sulla lista Python