Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <bitset>
- using namespace std;
- // Funcion que devuelve la cadena de texto representando los bits del numero dado.
- string Bits(int numero);
- int main()
- {
- int valor = 0; // valor es 0, por lo que todos sus bits están a 0 inicialmente.
- // Invertimos todos los bits. O sea, se ponen todos a 1. ~ es el operador NOT en operaciones de bit.
- valor = ~valor;
- // Desactivamos el bit de signo (el más pesado). Cuando está a 0, significa que el número es positivo, cuando está a 1, significa que es negativo.
- valor &= 0x7fffffff; // (el valor del último bit en hexadecimal)
- cout << "POSITIVO:" << endl;
- // Recorremos 32 iteraciones y al mismo tiempo que incrementamos el contador, hacemos que valor desplace sus bits hacia la derecha en una posición. ( valor >>= 1 )
- for(int i=0; i< 32; i++, valor>>=1)
- cout << Bits(valor) << " = " << valor << endl;
- // Ahora hacemos la parte negativa. Volvemos a poner valor a 0 y lo invertimos.
- valor = 0;
- valor = ~valor;
- // Esta vez no quitamos el bit de signo... Por lo que todos los bits están a 1. (-1 en decimal)
- cout << "NEGATIVO: " << endl;
- // Esta vez desplazamos los bits a la izquierda.
- for(int i=1; i<= 32; i++, valor<<=1)
- cout << Bits(valor) << " = " << valor << endl;
- }
- string Bits(int numero)
- {
- // Construimos un bitset con el tamaño del int por defecto (32 bits en Sistemas Operativos de 32/64 bits) dandole el valor del numero pasado a la función
- // sizeof(int) devuelve 4 que equivale a 4 bytes, los cuales para pasar a bits hay que multiplicar por 8.
- bitset<sizeof(int)*8> _bits(numero);
- // Devolvemos la string (cadena de texto) de los bits.
- return _bits.to_string();
- }
Add Comment
Please, Sign In to add comment