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

14

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?

    
por Pranit Bauva 19.08.2012 / 15:11

5 respostas

39

Você pergunta como representar 256 em binário, mas estou imaginando por que as pessoas dizem que bytes podem armazenar 256 números diferentes, quando o maior número que eles armazenam é 255. Como Claudiop disse, os computadores começam a contar a 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 com sinal (um valor sinalizado é aquele que pode conter valores negativos), 11111111 é, na verdade, -1. Consulte o link . 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 só pode suportar 8 bits, o último bit transbordará e deixará você 0. Para bytes assinados, os valores vão 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 "sinal". 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), você pode abrir a calculadora, mudar para o modo programador, escolher sbyte e brincar com os bits para ver como eles se correlacionam com suas representações decimais. / p>

    
por 19.08.2012 / 16:15
12

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

    
por 19.08.2012 / 15:14
11

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

Ou você só tem 8 bits. Nesse caso, ocorre um chamado estouro . 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 "devolvidos". Então você acaba com 0d = 0b (um sinalizador de estouro especial será definido na maioria das arquiteturas de computadores, assim como uma nota lateral).

Pense nisso como contando com os dedos. Imagine seus dedos mostrarem 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. 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. Isto significa que se você quiser saber apenas um único bit, você tem que pedir ao sistema de memória para lhe dar um certo byte de um endereço e então você tem que descobrir o valor do bit que está interessado em você mesmo.

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

    
por 19.08.2012 / 15:26
5

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

    
por 19.08.2012 / 15:13
0

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

1 << 8

Um byte só pode conter 256 valores, o que inclui o intervalo de [0 a 255]. Para o valor 256, você precisaria usar um tipo de dados capaz de reter um valor maior, por exemplo, um inteiro.

    
por 19.08.2012 / 16:51

Tags