[pyar] como sacar informacion de un numero (como si fuera un bitfield)

Ernesto Savoretti esavoretti en gmail.com
Mie Ago 11 11:11:51 ART 2010


El día 11 de agosto de 2010 10:24, Roberto Alsina
<ralsina en netmanagers.com.ar> escribió:
>> Y quiero averiguar si el 22 'incluye' al 4 (en base a la descomposicion
>> del 22 en potencias de 2)
>
> 22 & 4
>
> Ah, que, se creían que nunca iban a usar eso de los numeros binarios!
> Muahahahahaha!


Como que no!
De no ser así, como hubiéramos hecho programas de ajedrez en Python -
o para el caso en cualquier otro lenguaje -
Asumo, por supuesto, que todos hemos desarrollado un programita de ajedrez...
Para el improbable supuesto de que alguien no lo haya hecho aún,
aclaro que las posiciones en ajedrez se computan como números de 64
bits (la cantidad de casillas del tablero) que funcionan como
"máscaras". Luego, para calcular movimientos, se usa el bitwise and -
en algunos casos también el bitwise or , si es para sumar posiciones -
y de esa manera se calcula si por ejemplo es posible un movimiento
dado.
Esta manera de hacer las cosas, que parece un tanto extraña, está
ligada a la performance - todo esto implica calcular, por ejemplo,
1000 variantes en un lapso de tiempo muy limitado - que es máxima con
operaciones de bits..
Y aquí viene la razón de toda esta perorata:
al hacer esto, comprobé que la velocidad de estas operaciones en
Python es igual o sólo ligeramente inferior a la de C.
Asumo que esto se debe (algún core developer al rescate aquí) a que
este tipo de cosas están altamente optimizadas.
Alguna opinión al respecto?
O preparamos un articulito para el No 2 de PET?

Saludos.

-- 

                                    Ernesto Savoretti



More information about the pyar mailing list