25/08/2014, 01:18
|
| | Fecha de Ingreso: junio-2010 Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 6 meses Puntos: 73 | |
Respuesta: Desplazamiento a nivel de bits Si se trata de números enteros con signo, la cosa es sencilla: El bit más significativo es el de signo. Si el bit está a 0, el número es positivo, y su valor será el correspondiente a esa secuencia de bits. Si el bit más significativo está a 1, el número es negativo, se hace el complemento a 2 y se cambia de signo. Por ejemplo: (me ciño a 8 bits, pero es aplicable a cualquier número de bits):
0000 0011 = +3
1111 1101 = -3
0000 0001 = +1
1111 1111 = -1
0011 1001 = +57
1100 0111 = -57
Como puedes comprobar, cada número es el complemento a 2 de su correspondiente con el signo cambiado. La operación hay que hacerla con el total de bits correspondiente al tamaño del entero. Por ejemplo, -1 en 32 bits sería 11111111 11111111 11111111 11111111, y -3 = 11111111 11111111 11111111 1111 1101.
En cambio, si se trabaja con enteros sin signo, ya tendríamos (sigo poniendo los ejemplos sobre 8 bits):
1111 1111 = 255 (y no -1)
1111 1101 = 253 (y no -3)
1100 0111 = 199 (y no -57) |