¿Cuál es la representación binaria de "256"? [cerrado]

15

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?

Pranit Bauva
fuente
3
Como @Serious ya dijo. Necesita un bit más, porque las computadoras comienzan a contar desde 0. Eso es un 11 en "lenguaje de mano", o "una persona más" (byte) en el mundo real :)
SOMN
2
Cerré esto como "No es una pregunta real" porque es difícil decir lo que realmente quieres saber. ¿Quieres saber la representación binaria de un número? ¿Se pregunta cómo es posible que exista un número aunque no pueda caber en un byte? ¿Se pregunta cómo se almacenan los datos en bits y bytes? Sí, 1 byte no puede contener más de 8 bits, porque esa es la definición de un byte. Pero eso no impone ningún límite a los números en general.
Der Hochstapler
No puede representar 256 en 8 bits.
Overmind

Respuestas:

40

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.

Calculadora de Windows que muestra 256 en decimal y binario

mowwwalker
fuente
12

Bueno, necesitas 2 bytes para representar eso. 256 = 00000001 00000000

Michael S.
fuente
11

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).

Shi
fuente
Sí, y la computadora no piensa en esos 64 bits como un grupo de 8 bytes separados, sino como una sola unidad que consta de 64 bits. Por ejemplo, si tiene valores con signo, solo uno de esos 64 bits es el bit de signo.
Sr. Lister el
5

Es 100000000 y necesita más de un byte. En realidad necesita 9 bits.

Grave
fuente
0

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.

oleksii
fuente