[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