Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: oxydec en 28 Octubre 2012, 23:29 pm



Título: [duda] ¿Unsigned int de 64 bits?
Publicado por: oxydec en 28 Octubre 2012, 23:29 pm
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.


Título: Re: [duda] ¿Unsigned int de 64 bits?
Publicado por: xiruko en 28 Octubre 2012, 23:40 pm
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:
Código
  1. for (i=0; i<64; i++)
  2.     if ((a>>i) & 1) contador++;

un saludo!


Título: Re: [duda] ¿Unsigned int de 64 bits?
Publicado por: rir3760 en 29 Octubre 2012, 02:23 am
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.
Utilizando un bucle mas o menos así:
Código
  1. for (num_bits = 0; num != 0; num &= num - 1)
  2.   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