Por que de 0 a 255?

Em um computador, existem casos em que um número pode ir de 0 até 255. Ou seja, seu valor mínimo é zero, e seu valor máximo é duzentos e cinquenta e cinco. Não chega até 256. Por exemplo, ao digitar cores RGB, RGBA, ou endereços IPv4, números vão de 0 a 255. Mas por que 255 exatamente? Por que não 100 ou 1000? O que há de especial no número 255?

O número 255 é o valor máximo que cabe em um único byte. Um byte tem 8 bits de dados. Cada bit pode ter somente dois valores: 0 ou 1. Com 2 bits, temos 4 combinações possíveis: 00, 01, 10, e 11. Com 8 bits, seriam 256 combinações diferentes, ou 2 elevado a 8ª potência. Transformamos essas combinações em número decimais interpretando-as como números binários. Já que existem 256 combinações de 8 bits, existem 256 números diferentes que podemos representar com 8 bits. Um desses números é o zero (00000000), então subtraímos esse 1 número dos total de combinações para obtermos o valor máximo que um byte representando um número inteiro não-negativo poderia ter (11111111) que seria 255, ou 28 - 1.

Diagrama mostrando como bits e números binários funcionam usando lâmpadas acesas e apagadas como analogia.
Fonte: br.virtualcuriosities.com. Ilustração da lâmpada por Ignacio javier igjav. Licença: CC BY-SA 3.0.

Embora isso soe complicado, essa mesma formula funciona para os números decimais que usamos normalmente: o número valor máximo que podemos representar com 3 dígitos decimais é 999, ou 103 - 1. Números binários são base 2, e números decimais são base 10. Essa base, elevada a quantidade de dígitos que temos, menos um, é sempre o valor máximo que podemos ter com a quantidade dada de dígitos.

XN - 1 = valor máximo para N dígitos em base X

Números de 0 a 255 também pode ser representados por dois dígitos hexadecimais. Por exemplo, uma cor RGB usa 1 byte para cado canal de cor. Ou seja, R vai de 0 a 255, G vai de 0 a 255, e B vai de 0 a 255. Dada a tupla RGB 255-0-128, poderíamos escreve-la na forma hexadecimal FF-0-80. No caso de cores, é comum a representação hexadecimal começar com um octótropo (#), por exemplo: #ff0080.

No caso de números inteiros que possam ser negativos, um bit do byte seria usado para o sinal (negativo ou positivo). Como o número zero não é nem negativo nem positivo, um dos lados gastaria uma combinação para representar o zero, e o outro lado ficaria com um número a mais. Por exemplo, se 00000000 for o valor mínimo negativo, e 10000000 representar zero, um byte pode representar um valor de -128 (00000000) a 127 (11111111).

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *