Qual é a representação binária de "256"? [fechadas]


15

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 do que 8 dígitos binários (bits). Como isso é possível?


3
Como @Serious já disse. Você precisa de mais um pouco, porque os computadores começar a contar a partir de 0. Isso é um 11 em "linguagem de mão", ou "mais uma pessoa" (byte) no mundo real :)
sömn

2
Fechei isso como "Não é uma pergunta real" porque é difícil dizer o que você realmente quer saber. Deseja saber a representação binária de um número? Você está se perguntando como é possível que um número exista mesmo que não possa caber em um byte? Você está se perguntando como os dados são armazenados em bits e bytes? Sim, 1 byte não pode conter mais de 8 bits, porque essa é a definição de byte. Mas isso não impõe limites aos números em geral.
Der Hochstapler

Você não pode representar 256 em 8 bits.
Overmind

Respostas:


40

Você pergunta como representar 256 em binário, mas acho que você está se perguntando por que as pessoas dizem que os bytes podem armazenar 256 números diferentes, quando o maior número que ele armazena é 255. Como Claudiop disse, os computadores começam a contar em 0, então 0 é realmente 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 pode conter valores negativos), 11111111 é na verdade -1. Veja http://en.wikipedia.org/wiki/Two's_complement . A maneira como o complemento de dois funciona, adicionando um número negativo a um número positivo resulta em 0. Como outras pessoas disseram, se adicionarmos um pouco a 11111111 e seu tipo de dados puder suportar apenas 8 bits, o último bit será excedido 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 "sign". Se este bit estiver definido, o número é 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, alternar 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


12

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


11

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

Ou você tem apenas 8 bits. Nesse caso, ocorre o chamado estouro . Então "internamente", o 1 será adicionado, resultando em 100000000b (256d em 9 bits). Mas como você tem apenas 8 bits disponíveis, os 8 bits inferiores serão "retornados". Portanto, você termina com 0d = 0b (um sinalizador de estouro especial será definido na maioria das arquiteturas de computadores, como uma nota lateral).

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

A outra possibilidade é que você tenha mais de 8 bits disponíveis. Nesse 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 conhecer apenas um bit, precisará pedir ao sistema de memória que lhe forneça um determinado byte de um endereço e, em seguida, descobrir o valor do bit em que está interessado.

Mas, da mesma maneira que 8 bits compõem um byte, também existem tipos de dados maiores. 2 bytes compõem uma palavra (16 bits), duas palavras (quatro bytes, 32 bits) compõem uma palavra dupla. Hoje em dia, as arquiteturas padrão de 64 bits têm até tipos de dados de 64 bits (os chamados registradores).


Sim, e o computador não considera esses 64 bits como um grupo de 8 bytes separados, mas como uma única unidade composta por 64 bits. Por exemplo, se você assinou valores, apenas um desses 64 bits é o bit de sinal.
Sr. Lister

5

É 100000000 e precisa de mais de um byte. Na verdade, ele precisa de 9 bits.


0

Você pode representá-lo por uma mudança bit operação (esquerda ou direita, dependendo da ordenação de representação binária). Por exemplo, este liner funciona para uma representação endian grande (primeiro byte mais significativo):

1 << 8

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.