Puede convertir decimal a binario y binario a decimal. Pero, ¿cómo puedes representar el número "256"?
255 = 11111111
1 byte no puede tener más de 8 dígitos binarios (bits). ¿Cómo es esto posible?
Puede convertir decimal a binario y binario a decimal. Pero, ¿cómo puedes representar el número "256"?
255 = 11111111
1 byte no puede tener más de 8 dígitos binarios (bits). ¿Cómo es esto posible?
Respuestas:
Usted pregunta cómo representar 256 en binario, pero supongo que se pregunta por qué la gente dice que los bytes pueden almacenar 256 números diferentes, cuando el número más grande que almacena es 255. Como dijo Claudiop, las computadoras comienzan a contar en 0, entonces 0 es en realidad el primer número, 1 es el segundo, 2 es el tercero ... 255 es el 256.
Además, 11111111 es solo 255 para bytes sin signo. Cuando tiene un byte firmado (un valor firmado es uno que puede contener valores negativos), 11111111 es en realidad -1. Ver http://en.wikipedia.org/wiki/Two's_complement . La forma en que funciona el complemento a dos, agregar un número negativo a un número positivo da como resultado 0. Como han dicho otras personas, si agregamos un bit a 11111111, y su tipo de datos solo puede admitir 8 bits, el último bit se desbordará y lo dejará con 0. Para bytes con signo, los valores oscilan entre -128 y 127. 128 números negativos + 0 + 127 números positivos = 256 números en total.
Para valores con signo, el primer bit es el bit de "signo". Si se establece este bit, el número es negativo. 10000000 es negativo, 01000000 es positivo, 11111111 es negativo, 01111111 es positivo ...
Si está en Windows (tal vez Mac también lo tiene), puede abrir la calculadora, cambiarla al modo de programador, elegir sbyte y jugar con los bits para ver cómo se correlacionan con sus representaciones decimales.
Bueno, necesitas 2 bytes para representar eso. 256 = 00000001 00000000
Como ya sabe, 255d (decimal) es igual a 11111111b (binario). Si ahora desea agregar 1 al valor, hay dos posibilidades:
O solo tienes 8 bits. En este caso, ocurre un llamado desbordamiento . Entonces "internamente", el 1 se agregará dando como resultado 100000000b (256d en 9 bits). Pero debido a que solo tiene 8 bits disponibles, los 8 bits inferiores serán "devueltos". Entonces terminas con 0d = 0b (se establecerá un indicador de desbordamiento especial en la mayoría de las arquitecturas de computadora, solo como una nota al margen).
Piense en esto lo mismo que contar con los dedos. Imagina que tus dedos muestran 9d. Ahora agregas un dedo más. Terminas con 10. ¿Qué haces si quieres agregar incluso uno más?
La otra posibilidad es que tenga más de 8 bits disponibles. En este caso, simplemente puede agregar un dígito más al principio y el resultado será realmente 100000000b = 256d.
Un byte es la "unidad" más pequeña que un sistema informático (sistema de memoria) puede abordar. Esto significa que si desea saber solo un bit, debe pedirle al sistema de memoria que le dé un cierto byte de una dirección y luego debe calcular el valor del bit que le interesa.
Pero de la misma manera que 8 bits componen un byte, también hay tipos de datos más grandes. 2 bytes forman una palabra (16 bits), dos palabras (cuatro bytes, 32 bits) forman una palabra doble. Y las arquitecturas estándar actuales de 64 bits incluso tienen tipos de datos de 64 bits (los llamados registros).
Puede representarlo mediante una operación de desplazamiento de bits (hacia la izquierda o hacia la derecha según la endianidad de la representación binaria). Por ejemplo, este liner funciona para una representación endian grande (el byte más significativo primero):
1 << 8
Un byte sin signo solo puede contener 256 valores que incluyen el rango de [0 - 255]. Para el valor 256, necesitaría usar un tipo de datos que pueda contener un valor mayor, por ejemplo, un entero.