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
.
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
).
Deixe um comentário