[duda] ¿Unsigned int de 64 bits?

Iniciado por oxydec, 28 Octubre 2012, 23:29 PM

0 Miembros y 1 Visitante están viendo este tema.

oxydec

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.

xiruko

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

2) suponiendo que a sea un entero de 64 bits:
for (i=0; i<64; i++)
     if ((a>>i) & 1) contador++;


un saludo!

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language