Qual é a representação binária de “256”?

Qual é a representação binária de “256”?

Você pode converter decimal em binário e binário em decimal. Mas como você pode representar o número “256”?

255 = 11111111

1 byte não pode ter mais de 8 dígitos binários (bits). Como isso é possível?

Responder1

Você pergunta como representar 256 em binário, mas suponho que você esteja se perguntando por que as pessoas dizem que os bytes podem armazenar 256 números diferentes, quando o maior número armazenado é 255. Como disse Claudiop, os computadores começam a contar em 0, então 0 é na verdade o primeiro número, 1 é o segundo, 2 é o terceiro... 255 é o 256º.

Além disso, 11111111 é apenas 255 para bytes não assinados. Quando você tem um byte assinado (um valor assinado é aquele que pode conter valores negativos), 11111111 é na verdade -1. Verhttp://en.wikipedia.org/wiki/Two's_complement. Da mesma forma que o complemento de dois funciona, adicionar um número negativo a um número positivo resulta em 0. Como outras pessoas disseram, se adicionarmos um bit a 11111111 e seu tipo de dados suportar apenas 8 bits, o último bit irá transbordar e deixar você com 0. Para bytes assinados, os valores variam de -128 a 127. 128 números negativos + 0 + 127 números positivos = 256 números no total.

Para valores assinados, o primeiro bit é o bit de “sinal”. Se este bit estiver definido, o número será negativo. 10000000 é negativo, 01000000 é positivo, 11111111 é negativo, 01111111 é positivo...

Se você estiver no Windows (talvez o Mac também tenha), você pode abrir a calculadora, mudar para o modo de programador, escolher sbyte e brincar com os bits para ver como eles se correlacionam com suas representações decimais.

Calculadora do Windows mostrando 256 em decimal e binário

Responder2

Bem, você precisa de 2 bytes para representar isso. 256 = 00000001 00000000

Responder3

Como você já sabe, 255d (decimal) é igual a 11111111b (binário). Se agora você quiser adicionar 1 ao valor, existem duas possibilidades:

Ou você tem apenas 8 bits. Neste caso, um chamadotransbordaracontece. Então, "internamente", o 1 será adicionado resultando em 100000000b (256d em 9 bits). Mas como você só tem 8 bits disponíveis, os 8 bits inferiores serão "retornados". Então você acaba com 0d = 0b (um sinalizador de overflow especial será definido na maioria das arquiteturas de computador, apenas como uma observação lateral).

Pense nisso como contar com os dedos. Imagine que seus dedos mostram 9d. Agora você adiciona mais um dedo. Você acaba com 10. O que você faz se quiser adicionar mais um?

A outra possibilidade é que você tenha mais de 8 bits disponíveis. Neste caso você pode simplesmente adicionar mais um dígito ao início e o resultado será realmente 100000000b = 256d.

Um byte é a menor “unidade” que um sistema de computador (sistema de memória) pode endereçar. Isso significa que se você quiser saber apenas um único bit, terá que pedir ao sistema de memória que lhe forneça um determinado byte de um endereço e então terá que descobrir o valor do bit no qual está interessado.

Mas da mesma forma que 8 bits constituem um byte, também existem tipos de dados maiores. 2 bytes constituem uma palavra (16 bits), duas palavras (quatro bytes, 32 bits) constituem uma palavra dupla. E as atuais arquiteturas padrão de 64 bits possuem até tipos de dados de 64 bits (os chamados registradores).

Responder4

Você pode representá-lo por ummudança de bitsoperação (esquerda ou direita dependendo doendianismode representação binária). Por exemplo, este liner funciona para uma representação big endian (o byte mais significativo primeiro):

1 << 8

Um não assinadobytesó pode conter 256 valores, o que inclui o intervalo de [0 - 255]. Para o valor 256 você precisaria usar um tipo de dados capaz de conter um valor maior, por exemplo, um número inteiro.

informação relacionada