Hola, me ha picado el interes por el tema de las operaciones bitwise y tengo un par de dudas:
1) me gustaria saber si es posible y como definir un tipo entero sin signo de 64 bits
2) ¿como puedo contar el numero de bits "1" en un tipo como el anterior u otra variable? Preferiblemente con el minimo de instrucciones posible.
1) fijate en este hilo donde usan un entero de 64 bits:
http://foro.elhacker.net/programacion_cc/ayuda_con_ejercicio_en_c-t374559.0.html (http://foro.elhacker.net/programacion_cc/ayuda_con_ejercicio_en_c-t374559.0.html)
2) suponiendo que a sea un entero de 64 bits:
for (i=0; i<64; i++)
if ((a>>i) & 1) contador++;
un saludo!
Cita de: oxydec en 28 Octubre 2012, 23:29 PM2) ¿como puedo contar el numero de bits "1" en un tipo como el anterior u otra variable? Preferiblemente con el minimo de instrucciones posible.
Utilizando un bucle mas o menos así:
for (num_bits = 0; num != 0; num &= num - 1)
num_bits++;
* Al verificar que el numero es distinto de cero sabemos que existe al menos un bit a uno.
* La expresión "num & num - 1" desactiva el bit menos significativo.
Un saludo