banner
Centro de notícias
Nossa certificação ISO é uma prova de nossos altos padrões.

Números binários e hexadecimais explicados para desenvolvedores

Aug 01, 2023

Imagens Getty

Os sistemas de números binários e hexadecimais sustentam a forma como os sistemas de computador modernos funcionam. Interações de baixo nível com hexadecimal (hex) e binário são incomuns no mundo da programação Java, mas os desenvolvedores de software ocasionalmente operam no nível de bits e bytes. A capacidade de entender como esses sistemas numéricos alternativos funcionam é uma habilidade importante que um desenvolvedor de software experiente deve ter.

Trabalhar em hexadecimal ou binário pode parecer estranho e confuso em comparação com o sistema numérico de base 10 usado em nosso mundo cotidiano. Não é ciência de foguetes, mas requer ajustar a forma como se pensa sobre números e numerais. Os exemplos binários e hexadecimais a seguir explicam como essas alternativas ao sistema numérico baseado em decimal funcionam e se comportam.

Vamos começar a entender os sistemas numéricos binários e hexadecimais com um exemplo do mundo real.

Considere o numeral 500. Em um sistema numérico, cada dígito representa uma potência da base. Para o sistema numérico de base 10, cada dígito representa uma potência de 10. Veja como a base 10 descreve o numeral 500:

centenas

dezenas

uns

102

101

100

5

0

0

Na tabela acima, a coluna mais à esquerda descreve unidades de 100 (102), a coluna do meio descreve unidades de 10 (101) e a coluna mais à direita descreve unidades de um (100). Assim, podemos expressar o valor de 500 na base 10 como cinco unidades de 100, zero unidades de 10 e zero unidades de um, todas somadas.

A base 10 é ótima para humanos, mas - por razões relacionadas aos estados de energia ligado e desligado - os computadores usam um sistema numérico de base 2. Com base 2, ou binária, cada dígito representa uma potência de 2 e os dígitos são descritos como apenas dois números: 0 e 1. A tabela abaixo mostra a conversão de binário para decimal do valor de 500:

Valores de expoente expressos em decimal

256

128

64

32

16

8

4

2

1

28

27

26

25

24

23

22

21

20

1

1

1

1

1

0

1

0

0

(Nota: uma unidade de 20 = 1)

Assim, 50010 = 1111101002. Ou, dígito a dígito na base 2: 500 = (256 + 128 + 64 + 32 + 16 + 0 + 4 + 0 + 0)

Existem mais duas regras para calcular números no sistema binário. Primeiro, no mundo da computação digital, cada dígito de um número de base 2 é chamado de bit. Assim, os seguintes números representam valores de três bits: 000, 001, 011, 100, 101, 110 e 111. Da mesma forma, oito dígitos são valores de oito bits, como 10101010, juntamente com 11110000 e 11111111.

Em segundo lugar, os bits são agrupados em uma unidade organizacional chamada byte. Normalmente, um byte é um grupo de oito bits, como o número 10101010. Agrupar oito bits em um byte é convencional, embora algumas tecnologias, como buffers de protocolo, organizem um byte como um grupo de sete bits.

Trabalhar com bits e bytes usando notação binária pode ser difícil apenas no nível visual. Considere a expressão binária 1001001011011001 - esse número é difícil para o cérebro de qualquer pessoa decifrar.

Os números binários podem ser intimidantemente longos, mas os hexadecimais são exatamente o oposto. Os números hexadecimais descrevem um número em menos números do que o sistema numérico binário e de base 10.

A primeira coisa a entender sobre o sistema hexadecimal é que ele é composto por dezesseis algarismos:

0 1 2 3 4 5 6 7 8 9 abcdef

Em qualquer sistema numérico, cada dígito representa uma potência da base. No sistema de base 10 (decimal), o numeral 10 representa uma unidade de 101 e zero unidades de 100. No sistema hexadecimal, o numeral 10 representa uma potência do número 16, conforme tabela abaixo:

Valores de expoente expressos em decimal

65.536

4.096

256

16

1

164

163

162

161

160

Assim, o decimal 10 descreve um valor de 10 na base 10, enquanto em hexadecimais o numeral 10 se converte em 16. Podemos ilustrar a conversão da seguinte forma: