image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Fernando Araujo
Fernando Araujo17/01/2024 17:22
Compartilhe

Direto ao Ponto: VI – Sistemas de Numeração

  • #Informática Básica

Artigos da série: ( < ) Anterior | Índice | Seguinte ( > )


Olá, dev!

 

Este é mais um artigo da série DIRETO AO PONTO, que eu estou escrevendo para a DIO. Ele vai tratar do sistema binário de numeração, base lógica de toda a implementação dos computadores modernos.


Também serão tratadas outras bases de numeração usadas na programação, como o sistema octal e hexadecimal.

 

Sumário

1.   Introdução

2.   Sistema de numeração decimal

3.   Sistema de numeração binário (base 2)

4.   Sistema de numeração hexadecimal (base 16)

5.   Conversão de bases

6.   Programas para conversão de bases

7.   Considerações finais

8.   Referências

 

1 – Introdução

A série DIRETO AO PONTO enfoca artigos sobre conhecimentos básicos da programação e é voltada, principalmente, para os iniciantes.


Serão publicados artigos técnicos e artigos contando alguma história relacionada à computação/programação. Os artigos técnicos estavam sendo publicados no início da semana (às segundas ou terças), de manhã, seguindo uma agenda prevista, enquanto que os artigos com histórias eram publicados antes do final de semana (às quintas ou sextas), complementando os assuntos tratados nos artigos técnicos.


Eu estava publicando 2 artigos por semana, pois estou de férias do trabalho. Só que as minhas férias vão se encerrar no próximo domingo. Assim, eu não terei mais tanto tempo livre para escrever 2 artigos por semana e publicarei apenas 1 artigo por semana.


Nesta semana, estou conseguindo completar alguns artigos que já estavam em andamento e já publiquei 2 deles, um na segunda e outro na terça. Com este, estou publicando o terceiro artigo da semana.


Ainda vou tentar publicar mais 2 artigos que já comecei, encerrando este ritmo alucinante que decidi manter nesta última semana de férias.

 

Neste novo artigo, eu vou apresentar o sistema binário de numeração, base da implementação dos computadores modernos. Eu também vou tratar dos sistema hexadecimal, muito usado em programação, e um pouquinho do sistema octal, usado em comandos Linux.


Mais uma vez, eu deixo claro que boa parte do conteúdo escrito aqui vem da minha própria vivência pessoal ao longo dos anos em que convivi com a tecnologia e informática, desde 1980 (e até antes). Nestes casos, não haverá referências de livros, revistas ou sites, apenas as minhas lembranças pessoais.

 

2 – O Sistema de Numeração Decimal

 

Desde o início da humanidade, sempre existiu a necessidade de realizar contagens. Era preciso contar as maças, ovelhas, filhos, soldados, estrelas, etc.


No início, eram usadas pedras para contar as ovelhas que iam pastar; as pedras eram recolhidas quando as ovelhas retornavam para saber se faltava alguma.


O problema é que cada povo descobria sua própria maneira de contar e representar as unidades.Os sistemas de contagem mais conhecidos são o egípcio, romano, sumério, maia, chinês e indoarábico. O nosso sistema decimal deriva do sistema indo-arábico.

 

O antigo sistema romano tem algumas diferenças para o nosso sistema decimal e ainda hoje é usado em algumas atividades, como representação dos séculos, apêndices de um livro ou nos mostradores de alguns relógios.


Curiosidade: Você sabe como um mostrador de relógio representado por algarismos romanos identifica as 4 horas? Se você respondeu IV, está errado! Todas as horas usam algarismos romanos, mas 4 horas é representada por 4 tracinhos: IIII.


Sabia? Agora já sabe!!

Não acredita? Se você tem um relógio com algarismos romanos, dê uma olhada nele!!!


Arrá!!! Viu? Pois é! Agora pesquise para saber a causa.

Ah, o seu não tem? Bem, alguns têm e outros não têm. Paciência! :-)

 

Sistema de Numeração Romano

 

São características desse sistema:

·        Usa letras para representar quantidades fixas;

·        Usa apenas 7 símbolos para representar qualquer quantidade;

·        Não existe forma de representar a quantidade zero.

·       Não é um sistema posicional, ou seja, os algarismos valem a mesma quantidade em qualquer posição do número;

·       Se um algarismo menor estiver à direita de outro algarismo maior, ele se somará ao número;

·       Caso um algarismo maior estiver á direita de um algarismo menor, o algarismo menor será subtraído do número;

·        Alguns algarismos (I, X, C, M) podem se repetir até 3 vezes seguidas;

 

   Os algarismos romanos são mostrados abaixo, com quantidade que representam:

I – 1,

V – 5,

X – 10,

X – 50,

C – 100,

D – 500,

M - 1000

 

Como exemplo, veja a quantidade representada por alguns números romanos:

 

image


Sistema de numeração decimal


São características desse sistema:

·        Usa algarismos para representar quantidades definidas;

·        Usa 10 símbolos (de 0 a 9) para representar qualquer quantidade;

·        O zero é representado pelo algarismo 0;

·       É um sistema posicional, ou seja, algarismos iguais podem valer quantidades diferentes dependendo da posição em que aparecem no número.

 

Exemplos:

 

133 = 100 + 30 + 3 : veja que o primeiro 3 representa 30 unidades enquanto o segundo 3 representa 3 unidades.

 

1001 = 1000 + 1 : veja que o primeiro 1 representa 1000 unidades enquanto o segundo 1 representa 1 unidade

 

1234 = 1000 + 100 + 30 + 4

 

Então, veja que os algarismos 1234 (1, 2, 3 e 4) representam, na ordem (1234), a quantidade mil, duzentos e trinta e quatro itens.

 

Veja este outro exemplo:

4321 = 4000 + 300 + 20 + 1


           Veja que os algarismos 1234 (1, 2, 3, 4) representam, na ordem (4321), a quantidade quatro mil, trezentos e vinte e um.

 

           É por isso que se diz notação posicional. Um mesmo algarismo pode representar diferentes quantidades de itens, dependendo da sua posição no número.

 

           A notação posicional divide o número em ordens. Cada ordem imediatamente superior representa um conjunto completo de itens da unidade inferior. Desta forma, podemos representar cada ordem usando os algarismos definidos para o sistema decimal (0 a 9).

 

           Quando uma ordem já tem o algarismo 9, mais alto da sequência, e chega mais outro item, não existe outro algarismo para representar esta quantidade naquela ordem. Portanto, a quantidade de itens daquela ordem é zerada mais uma ordem imediatamente superior a ela é incrementada.

 

           No sistema decimal, as ordens são unidade, dezena, centena, milhar, etc. Uma dezena representa 10 unidades, uma centena representa 10 dezenas, um milhar representa 10 centenas, e assim por diante.

 

           Cada ordem representa 10 itens da ordem imediatamente inferior, ou seja, 1 dezena tem 10 unidades, 1 centena tem 10 dezenas, 1 milhar tem 10 centenas, etc.

 

... | MILHARES | CENTENAS | DEZENAS | UNIDADES

 

Veja os exemplos seguintes:


 número 1234: ... | MILHARES | CENTENAS | DEZENAS | UNIDADES

                                     1                   2                  3                 4


Ele possui 1 Milhar, 2 Centenas, 3 Dezenas e 4 unidades

 

3018: ... | MILHARES | CENTENAS | DEZENAS | UNIDADES

                        3                   0                  1                 8


Ele possui 3 Milhares, 0 Centenas, 1 Dezena e 8 unidades

 

           Agora vamos incrementar um número, por exemplo, 9:


... | MILHARES | CENTENAS | DEZENAS | UNIDADES

           0                   0                  0                 9


Ele possui 0 Milhares, 0 Centenas, 0 Dezena e 9 unidades, ou seja, possui apenas 9 Unidades.

 

Simplificando, só mostrando as ordens que vamos usar agora:


 DEZENAS | UNIDADES

      0                 9

  

Se mais 1 item precisa ser adicionado à esta quantidade, não existe mais algarismo para representar quantidade acima do 9.


Então, a quantidade total de dez itens será representada por 1 dezena, sem nenhum item adicional na ordem das Unidades, ficando assim:


DEZENAS | UNIDADES

      1                 0

 

           Caso chegue mais 1 item (e sempre que chegar um novo item individual), ele será adicionado à ordem das Unidades, que passará para 1.


DEZENAS | UNIDADES

      1                 1

 

 E a quantidade total será 11 itens, com 1 dezena e 1 unidade

  

E como representar a retirada de 1 item da contagem? Bem, isso tem mais a ver com a parte de aritmética de números binários. Fica pra outra vez!


 

Veja que 2345 =

2000 + 300 + 40 + 5 =

2 x 1000 + 3 x 100 + 4 x 10 + 5 x 1 =

2 x 103 + 3 x 102 + 4 x 101 + 5 x 100 =

Resumindo, 2 Milhares, 3 Centenas, 4 Dezenas, 1 Unidade

 

Ou seja, podemos decompor um número decimal em potências de 10, cada uma delas representando uma das ordens do número.

 

3 – O Sistema de numeração binário (Base 2)

Vamos fazer uma analogia para o sistema binário, repetindo tudo que foi mostrado até agora para o sistema decimal.


São características desse sistema:

·        Usa algarismos para representar quantidades definidas;

·        Usa 2 símbolos (apenas 0 e 1) para representar qualquer quantidade;

·        O zero é representado pelo algarismo 0;

·       É um sistema posicional, ou seja, algarismos iguais podem valer quantidades diferentes dependendo da posição em que aparecem no número.


           A notação posicional divide o número em ordens. Cada ordem imediatamente superior representa um conjunto completo de itens da unidade inferior. Desta forma, podemos representar cada ordem usando os algarismos definidos para o sistema decimal (0 e 1).

 

           Quando uma ordem já tem o algarismo 1, mais alto da sequência, e chega mais outro item, não existe outro algarismo para representar esta quantidade naquela ordem. Portanto, a quantidade de itens daquela ordem é zerada mais uma ordem imediatamente superior a ela é incrementada.

 

           No sistema binário, as ordens são par, quadra, octeto, etc. Um par representa 2 unidades, uma quadra representa 2 pares, um octeto representa 2 quadras, e assim por diante.

 

           Cada ordem representa 2 itens da ordem imediatamente inferior, ou seja, 1 par tem 2 unidades, 1 quadra tem 2 pares, 1 octeto tem 10 quadras, etc. Então podemos separar um número binário em algarismos, cada um deles em uma ordem diferente.


... | OCTETOS | QUADRAS | PARES | UNIDADES

 

Veja os exemplos seguintes:


 image


Ou seja,


O primeiro número (01) representa a quantidade 0 + 0 + 0 + 1 = 1 (decimal 1). 

o segundo (10) representa a quantidade 0 + 0 + 2 + 0 = 2 (decimal 2).

O terceiro (11) representa a quantidade 0 + 0 + 2 + 1 = 3 (decimal 3).

O quarto (100) representa a quantidade 0 + 4 + 0 + 0 = 4 (decimal 4).

O último (1101) representa a quantidade 8 + 4 + 0 + 1 = 1 (decimal 13).

 

No último exemplo, (1101) = 1000 + 0100 + 0000 + 0001: veja que o primeiro algarismo 1 representa 8 itens, o segundo algarismo 1 representa 4 itens e o terceiro algarismo 1 representa 1 item, total de 13 itens.


Então, veja que os algarismos 1101 (1, 1, 0 e 1) representam, na ordem (1101), a quantidade de treze itens.

 

           Para este outro número (0111) = 0000 + 0100 + 0010 + 0001 = 0 + 4 + 2 + 1 = 7 itens

           Veja que os algarismos 0111 (0, 1, 1, 1) representam, na ordem (0111), a quantidade de sete itens.

 

           Analisando estes dois exemplos, dá para entender porque se diz notação posicional. Um mesmo algarismo pode representar diferentes quantidades de itens, dependendo da sua posição no número.

 

           Um número representado em qualquer base (na base decimal não precisa) é escrito pelos seus algarismos, entre parênteses, seguidos do número da base.


Exemplo do último número mostrado acima: (1101)2

 

           E ele é lido indicando cada algarismo e dizendo a base:


O último número mostrado acima seria lido assim: Um, um, zero, um, na base 2.

 

Incremento de 1 item

 

           Agora vamos incrementar um número, por exemplo, a quantidade 1:

Número binário 01: QUADRAS | PARES | UNIDADES

                                        0                0                1

Ele possui 0 par e 1 unidade, ou seja, total de apenas 1 item.

 

           Se mais 1 item precisa ser adicionado à esta quantidade, não existe mais algarismo para representar quantidade acima do 1 na ordem das Unidades. Então essa ordem passará para zero, e 1 item será adicionado à ordem dos Pares.

 

           Então, a quantidade total de dois itens será representada por 1 par, sem nenhum item adicional na ordem das Unidades, ficando assim:


Número binário 10: QUADRAS | PARES | UNIDADES

                                       0                 1                0

Agora ele possui 1 par e 0 unidade, ou seja, total de 2 itens.

 

           Caso chegue mais 1 item (e sempre que chegar um novo item individual), ele será adicionado à ordem das Unidades, que passaria para 2. Não existe mais algarismos para representar quantidade acima do 1 na ordem das Unidades.

           

           Então essa ordem passará para zero, e 1 item seria adicionado à ordem dos Pares. No entanto, esta ordem passaria para 2. Não existe mais algarismos para representar quantidade acima do 1 na ordem dos Pares. Então essa ordem passará para zero, e 1 item será adicionado à ordem seguinte, das Quadras.

 

Número binário 11: QUADRAS | PARES | UNIDADES

                                         0               1                1

 

E agora ele possui 1 par e 1 unidade, ou seja, total de 3 itens.

 

Se ainda chegar mais outro item (e sempre que chegar um novo item individual), ele será adicionado à ordem das Unidades, que passará para 1.


Número binário 100: QUADRAS | PARES | UNIDADES

                                          1                0                0

 

Finalmente, ele possui 1 quadra, 0 par e 0 unidade, ou seja, total de 4 itens.


Este número binário (100)2 também pode ser escrito (0100)2, ou mesmo, (00000100)2.


           Como as ordens superiores não representam nenhuma quantidade, elas não alteram o valor do número. Para a implementação lógica, fica mais fácil tratar de 8 em 8 algarismos juntos, 16 em 16 e assim por diante.


           No sistema binário, cada algarismo (0 ou 1) que representa uma ordem é chamado de bit, cada conjunto de 4 algarismos é chamado de nibble e cada 8 algarismos é chamado de byte. Reconheceu a nomenclatura?

 

E como representar a retirada de 1 item da contagem? Bem, isso tem mais a ver com a parte de aritmética de números binários. Fica pra outra vez!

 

Veja que o número binário 1101 representa 1 Octeto, 1 Quadra, 0 Par, 1 Unidade

1 x 8 + 1 x 4 + 0 x 2 + 0 x 1 =                 (8 + 4 + 0 + 1 = 13 em decimal)

1 x 23 + 1 x 22 + 0 x 21 + 1 x 20  

 

Ou seja, podemos decompor um número binário em potências de 2, da mesma forma que fazemos com os números decimais.

           

4 – O Sistema de numeração hexadecimal (base 16)

Em programação, é comum usarmos o sistema de numeração hexadecimal, de base 16. Ele é muito usado nas aplicações seguintes:

·        definição de cores RGB, em CSS ou programas de imagens;

·        representação de instruções e dados em linguagem Assembly;

·        codificação de caracteres (código ASCII, UTF-8, etc.);

·        simplificação de números longos (bytes) em código binário;

 

Vamos fazer uma analogia para o sistema hexadecimal, repetindo tudo que foi mostrado até agora para o sistema binário.


São características desse sistema:

·        Usa algarismos e letras para representar quantidades definidas;

·        Usa 16 símbolos (de 0 a 9, e de A até F) para representar qualquer quantidade decimal;

·        O zero é representado pelo algarismo 0;

·        É um sistema posicional, ou seja, algarismos iguais podem valer quantidades diferentes dependendo da posição em que aparecem no número.

           

           Como este sistema conta quantidades baseadas em conjuntos de 16 itens em cada ordem e só existem 10 algarismos (de 0 a 9), foram utilizadas algumas letras para representar as quantidades de 11 a 15:

A: representa 10 itens;

B: representa 11 itens;

C: representa 12 itens;

D: representa 13 itens;

E: representa 14 itens;

F: representa 15 itens;

 

           A notação posicional divide o número em ordens. Cada ordem imediatamente superior representa um conjunto completo de itens da unidade inferior. Desta forma, podemos representar cada ordem usando os símbolos definidos para o sistema decimal (de 0 a F).

 

           Quando uma ordem já tem o símbolo F, mais alto da sequência, e chega mais outro item, não existe outro algarismo para representar esta quantidade naquela ordem. Portanto, a quantidade de itens daquela ordem é zerada mais uma ordem imediatamente superior a ela é incrementada.

 

           No sistema hexadecimal, não temos nomes para as ordens, como no decimal (e como eu fiz no binário, por simplificação didática). No entanto, a primeira ordem representa as quantidades de 0 a 15, a segunda ordem, imediatamente superior, representa os conjuntos de 16 itens, a terceira, conjuntos de 256 itens, e assim por diante.


           Cada ordem representa 16 itens da ordem imediatamente inferior, ou seja, a 2ª ordem tem 16 unidades, a 3ª ordem tem 16 unidades da 1ª ordem (ou 256 unidades = 162, a 4ª ordem tem 16 unidades da 3ª ordem (ou 4096 unidades = 163, etc.

 

... | CONJUNTOS DE 256 UNIDADES | CONJ. DE 16 UNIDADES | UNIDADES

 

           Em geral, em programação, só costumamos usar as duas primeiras ordens, agrupando os números em 2 dígitos decimais.

 

Veja os exemplos seguintes:


image

 

 

O Sistema de numeração octal (base 8)

 

Este sistema é pouco usado, mas ele tem importância na representação da informação de permissões de manipulação de arquivos nos sistemas Unix e Linux.

 

Vamos fazer uma analogia para o sistema hexadecimal, repetindo tudo que foi mostrado até agora para o sistema binário.


São características desse sistema:

·        Usa algarismos para representar quantidades definidas;

·        Usa 8 símbolos (de 0 a 7) para representar qualquer quantidade;

·        O zero é representado pelo algarismo 0;

·       É um sistema posicional, ou seja, algarismos iguais podem valer quantidades diferentes dependendo da posição em que aparecem no número.

           

           O uso que se faz deste sistema é mais para simplificação do que representar quantidades grandes usando a base 8. Ele é usado para simplificar números binários com 3 bits (de 000 até 111) em sequência, de 3 em 3 bits.

 

Por exemplo:

 

Número binário 000 representa a quantidade 0 em decimal, e 0 em octal também

Número binário 001 representa a quantidade 1 em decimal, e 1 em octal também

E assim por diante, até o número 111, que representa 7 em decimal e 7 em octal também

 

Então o número binário 000111011 pode ser separado em grupos de 3 bits,


000 111 011.


Representando cada conjunto de 3 bits pelo seu código octal correspondente, teremos 0 7 1.


Assim, o binário 000111011 pode ser representado pelo número octal 071.

 

Se você não está lembrado onde usou esta representação, veja o seguinte:

 

Permissão para acesso a arquivos e diretórios do Linux (e Unix):


Permissão diferenciada para o dono (criador) do arquivo, o grupo e outros usuários;


Para cada um destes personagens, deve-se atribuir permissão de leitura, escrita e execução, da seguinte forma:

r – permissão de leitura do arquivo (ou listagem do diretório);

w - permissão de escrita no arquivo (ou criação de arquivos e diretórios dentro de um diretório);

x - permissão de execução de um arquivo (executável) (ou acesso a um diretório pelo comando “cd”);

 

As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -la. As s letras (rwx) são agrupadas da seguinte forma:

    -rwxr-xr--  fernando  users ordena_texto

 

           Separando as letras de 3 em 3, depois do primeiro símbolo, temos:


- rwx r-x r—

- : se este for d, será um diretório, se for – será um arquivo;

rwx : permissão de leitura, escrita e execução do arquivo para o dono

r-x : permissão de leitura e execução do arquivo para o grupo, mas não de execução;

r-- : permissão apenas de leitura, para outros usuários, mas não de escrita nem de execução

 

Outra forma de representar estas permissões é indicando a ativação/desativação de cada permissão por meio de bits 0 e 1.


Esta permissão do exemplo ficaria assim:


- 111 101 100


111 : permissão de leitura, escrita e execução do arquivo para o dono

101 : permissão de leitura e execução do arquivo para o grupo, mas não de execução;

100 : permissão apenas de leitura, para outros usuários, mas não de escrita nem de execução

 

Pronto! Agora voltamos ao sistema octal.

 

111 representa a quantidade 7 no sistema octal, 101 representa 5 e 100 representa 4.


Portanto, as permissões para este arquivo seriam 754, cada número representando as ativações de escrita, leitura e gravação do dono (7), grupo(5) e outros (4).

 

Eu não usei o sistema octal para outra coisa em programação, além disso.

 

5 – Conversão de bases

Nós trabalhamos no dia-a-dia com o sistema decimal, mas em programação, é bem comum a gente precisar converter de uma base para outra.


Para converter de qualquer base para decimal, basta realizar as contas de acordo com os valores numéricos dos símbolos usados nas representações de outras bases e multiplicar o valor pela posição relativa de cada símbolo no número.

 

Por exemplo, para converter para a base decimal o número:

 

Binário 01101011 =


0 x 27 + 1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 =

0 x128 + 1 x 64 + 1 x 32 + 0 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1 = 

0 + 64 + 32 + 0 + 8 + 0 + 2 + 1 = 107 unidades

 

Octal 775 = Binário 111 111 101 -> rxw rxw r-w (para dono, grupo, outros)


E a conversão é feita como no exemplo anterior. Neste caso, nem sempre estamos buscando o resultado decimal equivalente, mas as permissões de acesso.

 

Hexadecimal 9F =


+ 9 x 161 + 15 x 160 =

9 x 16 + 15 x 1 = 

144 + 15 = 161 unidades

 

A conversão do sistema binário para o hexadecimal é feita agrupando-se os números binários de 4 em 4 e representando pelo hexadecimal equivalente:

 

Binário 10101110 = Binário 1010 1110 = Hexadecimal AE


A conversão do sistema hexadecimal para o binário é feita decompondo-se cada símbolo hexadecimal no binário equivalente:

 

Hexadecimal 3C = Hexadecimal 3 C = Binário 0011 1010 = Binário 00111010


           A conversão de um número decimal para qualquer base basta dividir o número pelo valor da base, termina quando o resto da divisão for menor que o valor da base e junta o último quocientes e os restos no final. Veja os exemplos a seguir:

 

 

Decimal 463 para hexadecimal:


463 / 16 = 28 (resto 15)

28 / 16 = 1 (resto 12) – O resto (1) é menor que a base (16), para aqui!

 

           Juntando o último quociente (1) e todos os restos (12 e 15), do último para o primeiro, e converte cada valor para o hexadecimal equivalente:


1(12)(15) = 1CF

 

           Para converter esse mesmo número para binário, basta converter cada símbolo hexadecimal para o binário equivalente:


Hexadecimal 1CF = Hexadecimal (1)(C)(F) – Binário (0001)(1100)(1111) = Binário 000111001111

 

E para converter de um decimal para o binário equivalente, basta fazer as divisões por 2, ao invés de 16:

 

Decimal 2588 para binário:


2588 / 2 = 1294 (resto 0)

1294 / 2 = 647 (resto 0)

647 / 2 = 323 (resto 1)

323 / 2 = 161 (resto 1)

161 / 2 = 80 (resto 1)

80 / 2 = 40 (resto 0)

40 / 2 = 20 (resto 0)

20/ 2 = 10 (resto 0)

10 / 2 = 5 (resto 0)

5 / 2 = 2 (resto 1)

2 / 2 = 1 (resto 0) – O resto (1) é menor que a base (2), para aqui!

 

           Juntando o último quociente (1) e os restos (0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0), do último para o primeiro, temos:

Binário 10100001100

 

           Convertendo este número agora para hexadecimal, separa de 4 em 4 da direita para a esquerda:


Binário 10100001100 = Binário 1010 0001 1100 = Hexadecimal A1C

 

           Se o grupo mais à esquerda não tiver 4 bits, deve-se acrescentar zeros á esquerda deste grupo até completar os 4 bits, necessários para converter diretamente de binário para um símbolo hexadecimal.

 

Binário 0101 0000 1100 = Hexadecimal 5 0 5 = Hexadecimal 50C

 

           Dificil? Nem tanto, com a prática vai ficar bem mais fácil!!!

 

6 – Programas para conversão de base

Mas...


Como eu costumo mostrar tudo nos meus artigos, não iria deixar você com essa dúvida nem com o trabalho de fazer estas conversões no lápis.


Seguem alguns programas em Python para realizar as conversões mais comuns, adaptado, após uma pequena ajuda do ChatGPT.

(“with a little help from my friends!”) :-)

 

Conversão da base 10 para qualquer base

 

def decimal_para_base(numero, base):
 if not (isinstance(numero, int) and isinstance(base, int)):
     return "Por favor, o número e a base devem ser inteiros."
 
 if numero < 0 or base < 2:
     return "O número não pode ser negativo e a base deve ser 2 ou maior."
 
 if numero == 0:
     return f"O número {numero} na base {base} é: 0"
 
 resultado = ""
 while numero > 0:
     resto = numero % base
     if resto < 10:
         resultado = str(resto) + resultado
     else:
         resultado = chr(ord('A') + resto - 10) + resultado
     numero = numero // base
 
 return f"O número na base {base} é: {resultado}"
 
# Exemplo de uso:
numero_decimal = int(input("Digite um número decimal: "))
base_alvo = int(input("Digite a base para a conversão: "))
 
resultado = decimal_para_base(numero_decimal, base_alvo)
print(resultado)

 

Conversão de qualquer base para decimal


def qualquer_base_para_decimal(numero, base):
 try:
     decimal = int(numero, base)
     return f"O número decimal correspondente é: {decimal}"
 except ValueError:
     return "Por favor, insira um número válido na base especificada."
 
# Exemplo de uso:
base_input = int(input("Digite a base do número: "))
numero_input = input("Digite um número válido na base desejada: ")
 
resultado_decimal = qualquer_base_para_decimal(numero_input, base_input)
print(resultado_decimal)

 

           OBS: Os dois programas foram testados no Google Colab e estão funcionando sem problema.

 

 

7 – Considerações finais

Este é mais um artigo da série DIRETO AO PONTO, que eu estou escrevendo para a DIO.


Neste artigo, eu apresentar o sistema binário de numeração, base da implementação dos computadores. O entendimento desse sistema ajuda a entender muitas coisas relacionadas à eletrônica digital, base de toda a lógica digital dos computadores, bem como de muita coisa ligada à programação, como o formato de arquivos e codificação de caracteres.


Eu também tratei do sistema hexadecimal, muito usado em programação, na definição de cores em CSS, programas de edição de imagens e outras áreas.


Foi dada uma breve introdução ao sistema octal, usado para simplificar o uso de comandos Linux de permissão de acesso a arquivos e diretórios.


Como a programação trabalha com vários sistemas de numeração, foi dedicada uma seção só para a conversão entre números das bases decimal, binária e hexadecimal.


Por fim, foram disponibilizados dois programas, escritos em Python, para realizar a conversão de bases, um de decimal para qualquer base e outro para converter de qualquer base para o sistema decimal.


O assunto é vasto, mas esta é apenas uma introdução sobre as bases binária e a hexadecimal.


Agora, você está aprendendo a escovar bits, como a gente costuma dizer!


Espero que tenha gostado. Até o próximo artigo, ainda nesta semana!

 

OBS: a ideia desta série era escrever artigos Direto ao Ponto, que levassem, no máximo, 2 horas para pesquisar as fontes, escrever e publicá-los, não tomando muito do meu tempo. Este artigo me tomou todo o tempo da manhã e da tarde! Ainda estou ajustando a rota...

 

8 – Referências

           Sem referências, tá tudo na minha cabeça (“in my head”).


“In your head, in your head

Zombie, zombie, zombie-ie-ie

What's in your head, in your head?

Zombie, zombie, zombie-ie-ie-ie, oh”

(Zombie – música do Cranberries) :-)


Mas, se você quiser uma bibliografia para se aprofundar no assunto, eu fiz uma pesquisa e, para o assunto deste artigo, gostei dessas:


[1] FERNANDES, Sthefania, Binário x decimal x Hexadecimal: Conheça os sistemas de numeração. Disponível em: <https://embarcados.com.br/binario-decimal-hexadecimal-sistemas-de-numeracao/>. Acessado em: 17/01/2024

 

[2] ROSA, Daniel, O comando LS do Linux – Como listar arquivos em um diretório e flags de opções. Disponível em: <https://www.freecodecamp.org/portuguese/news/o-comando-ls-do-linux-como-listar-arquivos-em-um-diretorio-e-flags-de-opcao/>. Acessado em: 17/01/2024


 

Artigos da série: ( < ) Anterior | Índice | Seguinte ( > )

Compartilhe
Comentários (4)
Fernando Araujo
Fernando Araujo - 02/12/2024 11:55

Obrigado, Márcio.

Vou ler.

Fernando Araujo
Fernando Araujo - 17/01/2024 20:58

É verdade! Eu fui escrevendo, escrevendo, e tudo estava relacionado... Aí, me empolguei pra falar tudo! Já tinha divido o tema em 2 artigos, o outro vai ser sobre operações aritméticas com números binários.

Marcio Herrero
Marcio Herrero - 18/01/2024 11:28

Boa Fernando, mais uma aula de 1 semana na facultadde rs rs..

Parabéns!

Segue o artigo do por quê alguns relógios romanos o 4 aparece como IIII e não IV ?

https://herweg.com.br/por-que-o-4-aparece-como-iiii-em-relogios-com-algarismos-romanos/

BEZERRA André
BEZERRA André - 17/01/2024 20:30

Esse poderia ter dividido em 3 bons artigos. Muito bom ARAUJO!