Capítulo – 4
Sistemas numéricos
Introdução
Na programação de recuperação de dados ou em qualquer outra programação de solução de problemas de disco, é muito comum ter que trabalhar com diferentes tipos de sistemas numéricos ao mesmo tempo para executar uma única tarefa ou até mesmo uma parte muito pequena do trabalho, como calcular localizações específicas de MBRs estendidos em termos de CHS (cilindros, cabeças e setores), e essas localizações orientam o programador durante toda a(s) operação(ões).
Provavelmente, a maioria dos novos programadores enfrenta problemas ou confusão ao converter diferentes tipos de sistemas numéricos entre si ao tentar aprender programação de sistemas em linguagem assembly, onde o uso de sistemas numéricos binários e hexadecimais é obrigatório.
Neste capítulo, discutiremos muitos conceitos importantes, incluindo sistemas numéricos binários, decimais e hexadecimais, e também organização de dados binários, como conversão de bits, nibbles, bytes, palavras e palavras duplas, etc., além de muitos outros tópicos relacionados a sistemas numéricos.
A maioria dos sistemas de computador modernos não representa valores numéricos usando o sistema decimal, mas normalmente usa sistemas numéricos binários ou de complemento de dois.
Existem quatro sistemas numéricos comumente usados em programação: binário, octal, decimal e hexadecimal . Entretanto, na maioria das vezes encontraremos sistemas numéricos binários, decimais e hexadecimais. Esses sistemas numéricos diferem dependendo do seu número base.
Cada sistema numérico tem seu próprio número base e símbolo de representação. Apresentei esses quatro números na tabela a seguir:
Nome do sistema numérico |
Número básico |
Símbolo usado para representar |
Binário |
2 |
B |
Octal |
8 |
Q ou O |
Decimal |
10 |
D ou não |
Hexadecimal |
16 |
TEMPO |
Sistema de numeração decimal
O sistema numérico decimal usa a base 10 e inclui os números de 0 a 9. Não se confunda, este é o sistema numérico comum que usamos em nossa vida diária para cálculos. Os valores ponderados de potência para cada posição serão:
Então, se eu tiver o número decimal 218 e quiser representá-lo da maneira acima, o número 218 será representado da seguinte maneira:
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
Agora vamos ver um exemplo de qualquer número decimal fracionário. Digamos que temos o número 821.128. Cada dígito à esquerda da vírgula decimal representa um valor de zero a nove, e uma potência de dez é representada por sua posição no número (começando com 0).
Os dígitos que aparecem à direita da vírgula decimal representam o valor de zero a nove multiplicado por uma potência negativa crescente de dez. Vamos ver como:
8*102+2*101+1*100+1*10-1+2*10-2+8*10-3
= 8 * 100 + 2 * 10 + 1 * 1 + 1 * 0,1 + 2 * 0,01 + 8 * 0,001
= 800 + 20 + 1 + 0,1 + 0,02 + 0,008
= 821.128
Sistema numérico binário
Hoje, a maioria dos sistemas de computadores modernos opera usando lógica binária. O computador representa valores usando dois níveis de tensão que indicam OFF ou ON usando 0 e 1. Por exemplo, uma tensão de 0 V é geralmente representada por um 0 lógico, e uma tensão de +3,3 V ou +5 V é representada por um 1 lógico. Assim, com dois níveis, podemos representar exatamente dois valores diferentes. Esses podem ser quaisquer dois valores diferentes, mas por convenção usamos os valores 0 e 1.
Como há uma correspondência entre os níveis lógicos usados por um computador e os dois dígitos usados no sistema numérico binário, não é surpreendente que os computadores usem o sistema binário.
O sistema de numeração binário funciona da mesma forma que o sistema de numeração decimal, exceto que o sistema de numeração binário usa a base 2 e usa apenas os dígitos 0 e 1, e usar qualquer outro dígito tornará o número um número binário inválido.
Os valores ponderados para cada item são apresentados da seguinte forma:
A tabela a seguir mostra a representação de um número binário em comparação com um número decimal:
Número decimal |
Representação binária de números |
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
10 |
1010 |
11 |
1011 |
12 |
1100 |
13 |
1101 |
14 |
1110 |
15 |
1111 |
Geralmente, no caso de números decimais, cada três dígitos decimais são separados por uma vírgula para tornar números maiores mais fáceis de ler. Por exemplo, é muito mais fácil ler um número 840.349.823 do que 840349823.
Inspirando-se na mesma ideia, há uma convenção semelhante para números binários, de modo que pode ser mais fácil ler números binários, mas no caso de números binários, adicionaremos um espaço a cada quatro dígitos, começando pelo dígito menos significativo à esquerda da vírgula decimal.
Por exemplo, se o valor binário for 1010011001101011, ele será escrito como 1010 0110 0110 1011.
Conversão de números binários para decimais
Para converter o número binário para o número decimal, multiplicamos cada dígito por sua posição ponderada e adicionamos cada um dos valores ponderados juntos. Por exemplo, o valor binário 1011 0101 representa:
1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 1*128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 181
Conversão de números decimais para binários
Para converter qualquer número decimal para seu sistema numérico binário, o método geral é dividir o número decimal por 2. Se o resto for 0, escreva 0 ao lado. Se o resto for 1, escreva 1.
Esse processo é continuado dividindo o quociente por 2 e descartando o resto anterior até que o quociente seja 0. Ao realizar a divisão, os restos que representarão o equivalente binário do número decimal são escritos começando no dígito menos significativo (à direita) e cada novo dígito é escrito no dígito mais significativo (à esquerda) do dígito anterior.
Vamos dar um exemplo . Considere o número 2671. A conversão binária para o número 2671 foi dada na tabela a seguir.
Divisão |
Quociente |
Restante |
Número binário |
2671 / 2 |
1335 |
1 |
1 |
1335 / 2 |
667 |
1 |
11 |
667 / 2 |
333 |
1 |
111 |
333 / 2 |
166 |
1 |
1111 |
166 / 2 |
83 |
0 |
0 1111 |
83 / 2 |
41 |
1 |
10 1111 |
41 / 2 |
20 |
1 |
110 1111 |
20 / 2 |
10 |
0 |
0110 1111 |
10 / 2 |
5 |
0 |
0 0110 1111 |
5 / 2 |
2 |
1 |
10 0110 1111 |
2 / 2 |
1 |
0 |
010 0110 1111 |
1 / 2 |
0 |
1 |
1010 0110 1111 |
Esta tabela serve para esclarecer cada etapa da conversão, porém, na prática e para obter facilidade e rapidez na conversão, você pode seguir o seguinte método para obter os resultados.
Seja 1980 qualquer número decimal a ser convertido em seu equivalente binário. Então, seguindo o método dado na tabela, resolveremos esse problema da seguinte maneira:
Quando organizamos os restos de acordo com a direção da seta, obtemos o número binário equivalente ao número decimal 1980 = 0111 1011 1100
Formatos de números binários
Normalmente escrevemos números binários como uma sequência de bits. Os “bits” são abreviações de “dígitos binários” em uma máquina. Existem limites de formato definidos para esses bits. Esses limites de formato foram representados na tabela a seguir:
Nome |
Tamanho em bits |
Exemplo |
Pedaço |
1 |
1 |
Mordidela |
4 |
0101 |
Byte |
8 |
0000 0101 |
Palavra |
16 |
0000 0000 0000 0101 |
Palavra Dupla |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
Podemos adicionar quantos zeros à esquerda quisermos sem alterar seu valor em nenhuma base numérica, mas normalmente adicionamos zeros à esquerda para ajustar o número binário a um limite de tamanho desejado.
Por exemplo, podemos representar o número 7 em diferentes casos, conforme mostrado na tabela:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Pedaço | | | | | | | | | | | | | | 1 | 1 | 1 |
Mordidela | | | | | | | | | | | | | 0 | 1 | 1 | 1 |
Byte | | | | | | | | | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Palavra | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Onde o bit mais à direita em um número binário é a posição de bit zero e cada bit à esquerda recebe o próximo número de bit sucessivo, conforme mostrado na tabela acima.
O bit zero é geralmente chamado de Bit Menos Significativo ou LSB e o bit mais à esquerda é geralmente chamado de Bit Mais Significativo ou MSB. Conte-nos sobre esses formatos de representação:
O Bit
Um Bit é a menor unidade de dados em um computador binário. Um único bit é capaz de representar apenas um valor, 0 ou 1. Se você estiver usando um bit para representar um valor Booleano (True/False), então esse bit representa true ou false .
A mordidinha
O Nibble entra especialmente na área de interesse quando falamos sobre sistemas numéricos, BCD (Binary Coded Decimal) e/ou números hexadecimais (base 16).
Um nibble é uma coleção de bits em um limite de 4 bits. São necessários quatro bits para representar um único dígito BCD ou hexadecimal. Com um nibble, podemos representar até 16 valores distintos.
No caso de números hexadecimais, os valores 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F são representados com quatro bits. O BCD usa dez dígitos diferentes (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) e requer quatro bits.
Na verdade, quaisquer dezesseis valores distintos podem ser representados com um nibble, mas dígitos hexadecimais e BCD são os itens primários que podemos representar com um único nibble. A representação de nível de bit do nibble será a seguinte:
O Byte
O Byte é a estrutura de dados mais importante usada pelo microprocessador 80x86. Um byte consiste em oito bits e é o menor item de dados endereçável no microprocessador. A memória principal e os endereços de E/S no computador são todos endereços de byte e, portanto, o menor item que pode ser acessado individualmente por um programa de microprocessador 80x86 é um valor de 8 bits.
Para acessar qualquer coisa menor, é preciso ler o byte que contém os dados e mascarar os bits indesejados. Faremos a programação para fazer isso nos próximos capítulos.
O uso mais importante para um byte é armazenar um código de caractere. Os bits em um byte são numerados do bit zero (b0) até sete (b7) conforme dado a seguir:
O bit 0 (b0) é o bit de ordem baixa ou bit menos significativo e o bit 7 (b7) é o bit de ordem alta ou bit mais significativo do byte.
Aqui vemos que um byte contém exatamente dois nibbles, onde os bits b0 a b3 compõem o nibble de ordem baixa e os bits b4 a b7 formam o nibble de ordem alta.
Como um byte contém exatamente dois nibbles, os valores de byte requerem dois dígitos hexadecimais.
Como o computador moderno tradicional é uma máquina endereçável por bytes, é mais eficiente manipular um byte inteiro do que um bit ou nibble individual.
Esta é a razão pela qual a maioria dos programadores usa um byte inteiro para representar tipos de dados que não requerem mais do que 256 itens
Como um Byte contém oito bits, ele pode representar 28 ou 256 valores diferentes, porque o número binário máximo de 8 bits pode ser 1111 1111, o que é equivalente a 256 (Decimal), portanto, geralmente um byte é usado para representar o seguinte:
- valores numéricos sem sinal no intervalo de 0 a 255
- números assinados no intervalo de -128 a +127
- Códigos de caracteres ASCII
- E outros tipos de dados especiais que não exigem mais do que 256 valores diferentes, pois muitos tipos de dados têm menos de 256 itens, então oito bits geralmente são suficientes.
A Palavra
Uma palavra é um grupo de 16 bits . Mas tradicionalmente o limite para uma Palavra é definido como 16 bits ou o tamanho do barramento de dados para o processador e uma Palavra Dupla é Duas Palavras. Portanto, uma Palavra e uma Palavra Dupla não são um tamanho fixo, mas variam de sistema para sistema, dependendo do processador. No entanto, para leitura conceitual, definiremos uma palavra como dois bytes.
Quando vemos uma palavra no nível de bit, ela será numerada como os bits em uma palavra começando do bit zero (b0) até quinze (b15). A representação do nível de bit será a seguinte:
Onde o bit 0 é o LSB (Least Significant Bit) e o bit 15 é o MSB (Most Significant Bit). Quando há necessidade de se referir aos outros bits em uma palavra, seu número de posição de bit é usado para se referir a eles.
Dessa forma, uma palavra contém exatamente dois bytes, de modo que do Bit b0 ao Bit b7 formam o byte de ordem baixa e os bits b8 a b15 formam o byte de ordem alta. Com uma palavra de 16 bits, podemos representar 216 (65536) valores diferentes. Esses valores podem ser os seguintes:
- Os valores numéricos sem sinal no intervalo de 0 a 65.535.
- Os valores numéricos assinados no intervalo de -32.768 a +32.767
- Qualquer tipo de dado com no máximo 65.536 valores. Dessa forma, as palavras são mais usadas para:
- Valores de dados inteiros de 16 bits
- Endereços de memória de 16 bits
- Qualquer sistema numérico que requeira 16 bits ou menos
A Palavra Dupla
Uma double word é exatamente de acordo com seu nome e é duas palavras. Portanto, uma quantidade de double word é 32 bits . A double word também pode ser dividida em uma high order word e uma low order word, quatro bytes, ou oito nibbles etc.
Dessa forma, a palavra Double pode representar todos os tipos de dados diferentes. Pode ser dos seguintes:
- Uma palavra dupla sem sinal no intervalo de 0 a 4.294.967.295,
- Uma palavra dupla assinada no intervalo de -2.147.483.648 a 2.147.483.647,
- Um valor de ponto flutuante de 32 bits
- Ou quaisquer outros dados que requeiram 32 bits ou menos.
Sistema de numeração octal
O Sistema Numérico Octal era popular em sistemas de computadores antigos, mas é muito raramente usado hoje em dia. No entanto, tomaremos um ideal de Sistema Octal apenas para conhecimento.
O sistema Octal é baseado no sistema binário com um limite de 3 bits. O Sistema Numérico Octal usa a base 8 e inclui apenas os dígitos de 0 a 7. Dessa forma, qualquer outro dígito tornaria o número um número octal inválido.
Os valores ponderados para cada posição são os seguintes mostrados na tabela:
(base)poder |
85 |
84 |
83 |
82 |
81 |
80 |
Valor |
32768 |
4096 |
512 |
64 |
8 |
1 |
Conversão de binário para octal
Para converter um número binário inteiro para octal, seguimos os dois passos seguintes:
Primeiro, divida o número binário em seções de 3 bits do LSB para o MSB . E então converta o número binário de 3 bits para seu equivalente octal. Vamos dar um exemplo para entender melhor. Se tivermos dado qualquer número binário, digamos 11001011010001 para converter para o Sistema Numérico Octal, aplicaremos as duas etapas acima neste número da seguinte forma:
Seção de 3 bits de número binário |
011 |
001 |
011 |
010 |
001 |
Número equivalente |
3 |
1 |
3 |
2 |
1 |
Portanto, o número octal, equivalente ao número binário 11001011010001, é 31321.
Conversão de Octal para Binário
Para converter qualquer número octal inteiro em seu número binário correspondente, seguimos os dois passos a seguir:
Primeiro converta o número decimal para seu equivalente binário de 3 bits. E então combine as seções de 3 bits removendo os espaços. Vamos dar um exemplo. Se tivermos qualquer número octal inteiro 31321(Q) para converter em seu número binário correspondente, aplicaremos os dois passos acima da seguinte forma:
Número equivalente |
3 |
1 |
3 |
2 |
1 |
Seção de 3 bits de número binário |
011 |
001 |
011 |
010 |
001 |
Portanto, o equivalente binário para o número octal 31321(Q) é 011 0010 1101 0001.
Conversão de Octal para Decimal
Para converter qualquer número octal em decimal, multiplicamos o valor em cada posição pelo seu peso octal e somamos cada valor.
Vamos dar um exemplo para entender melhor isso. Vamos ter qualquer número octal 31321Q para ser convertido em seu número decimal correspondente. Então seguiremos os seguintes passos:
3*84 + 1*83 + 3*82 + 2*81 + 1*80 = 3*4096 + 1*512 + 3*64 + 2*8 + 1*1 = 12288 + 512 + 192 + 16 + 1 = 13009
Conversão de decimal para octal
Converter decimal para octal é um pouco mais difícil. O método típico para converter de decimal para octal é a divisão repetida por 8. Para esse método, dividimos o número decimal por 8 e escrevemos o resto ao lado como o dígito menos significativo. Esse processo é continuado dividindo o quociente por 8 e escrevendo o resto até que o quociente seja 0.
Ao realizar a divisão, os restos que representarão o equivalente octal do número decimal são escritos começando no dígito menos significativo (à direita) e cada novo dígito é escrito no próximo dígito mais significativo (à esquerda) do dígito anterior.
Vamos entender melhor com um exemplo. Se tivermos qualquer número decimal, digamos 13009 (encontramos esse número decimal no exemplo acima e, convertendo-o de volta para o número Octal, também podemos verificar o exemplo anterior.), então esse método foi descrito na tabela a seguir:
Divisão |
Quociente |
Restante |
Número Octal |
13009 / 8 |
1626 |
1 |
1 |
1626 / 8 |
203 |
2 |
21 |
203 / 8 |
25 |
3 |
321 |
25 / 8 |
3 |
1 |
1321 |
3 / 8 |
0 |
3 |
31321 |
Como você pode ver, estamos de volta ao número original. É o que deveríamos esperar. Esta tabela era para entender o procedimento. Agora, vamos repetir a mesma conversão para entender o método que deve ser seguido na prática para obter a facilidade de trabalho e economizar tempo também. Ambas são as mesmas coisas, na verdade.
Quando organizamos os restos de acordo com a direção da seta, obtemos o Número Octal 31321, que esperávamos.
Sistema de numeração hexadecimal
Os números hexadecimais são mais comumente usados em nossa recuperação de dados ou qualquer outro tipo de solução de problemas de disco ou programação de análise de disco porque os números hexadecimais oferecem os dois recursos a seguir:
Números hexadecimais são muito compactos. E é fácil converter de hexadecimal para binário e de binário para hexadecimal. Quando estivermos calculando muitas coisas importantes como Número de Cilindros, Cabeças e Setores de um disco rígido ou estivermos usando programas de edição de disco rígido para analisar diferentes características e problemas, precisaremos de um bom conhecimento do sistema Hexadecimal. O sistema Hexadecimal é baseado no sistema binário usando um Nibble ou limite de 4 bits.
O Sistema Numérico Hexadecimal usa a base 16 e inclui apenas os dígitos de 0 a 9 e as letras A, B, C, D, E e F. Usamos H com o número para denotar qualquer número hexadecimal. A tabela a seguir mostra a representação de vários sistemas numéricos, diferenciando-os entre si:
Binário | Octal | Decimal | Hex |
0000B | 00Q | 00 | 00H |
0001B | 01Q | 01 | 01H |
0010B | 02Q | 02 | 02H |
0011B | 03Q | 03 | 03H |
0100B | 04Q | 04 | 04H |
0101B | 05Q | 05 | 05H |
0110B | 06Q | 06 | 06H |
0111B | 07Q | 07 | 07H |
1000B | 10Q | 08 | 08H |
1001B | 11Q | 09 | 09H |
1010B | 12Q | 10 | 0AH |
1011B | 13Q | 11 | 0BH |
1100B | 14Q | 12 | 0CH |
1101B | 15Q | 13 | 0DH |
1110B | 16Q | 14 | 0EH |
1111B | 17Q | 15 | 0FH |
1 0000B | 20Q | 16 | 10H |
Esta tabela fornece todas as informações que você pode precisar para converter de uma base numérica para outra para valores decimais de 0 a 16.
Os valores ponderados para cada posição para números hexadecimais foram mostrados na tabela a seguir:
(Base)poder |
163 |
162 |
161 |
160 |
Valor |
4096 |
256 |
16 |
1 |
Conversão de binário para hexadecimal
Para converter um número binário em formato hexadecimal, primeiro preencha o número binário com zeros à esquerda no lado mais à esquerda para garantir que o número binário contenha múltiplos de quatro bits. Depois disso, siga os dois passos a seguir:
Primeiro, divida o número binário em seções de 4 bits do LSB para o MSB. E então converta o número binário de 4 bits para seu equivalente Hex. Vamos dar um exemplo para entender melhor o método. Vamos ter qualquer número binário 100 1110 1101 0011 para ser convertido em seu número hexadecimal correspondente. Então, aplicaremos as duas etapas acima, conforme mostrado abaixo:
Seção de número binário de 4 bits |
0100 |
1110 |
1101 |
0011 |
Valor hexadecimal |
4 |
E |
E |
3 |
Assim, o valor hexadecimal, correspondente ao número binário 100 1110 1101 0011 é 4ED3.
Conversão de hexadecimal para binário
Para converter um número hexadecimal em um número binário, seguimos os dois passos seguintes:
Primeiro, converta o número hexadecimal para seu equivalente binário de 4 bits. E então combine as seções de 4 bits removendo os espaços. Para entender melhor o procedimento, vamos pegar um exemplo do número hexadecimal acima, que é 4ED3 e aplicar essas duas etapas nele da seguinte forma
Valor hexadecimal |
4 |
E |
E |
3 |
Seção de número binário de 4 bits |
0100 |
1110 |
1101 |
0011 |
Assim, para o número hexadecimal 4ED3, obtemos o número binário correspondente = 0100 1110 1101 0011
Esta é a resposta esperada.
Conversão de Hexadecimal para Decimal Para converter de Hexadecimal para Decimal, multiplicamos o valor em cada posição pelo seu peso hexadecimal e adicionamos cada valor. Vamos dar um exemplo para entender melhor o procedimento. Suponha que temos qualquer número hexadecimal 3ABE para ser convertido em seu número decimal equivalente. Então o procedimento será o seguinte: 3*163 + A*162 + B*161 + E*160 = 3* 4096 + 10* 256 + 11*16 + 14 = 12288 + 2560 + 176 + 14 = 15038
Portanto, o número decimal equivalente para o número hexadecimal 3ABE é 15038.
Conversão de decimal para hexadecimal
Para converter decimal em hexadecimal, o método típico é a divisão repetida por 16. Para esse método, dividimos o número decimal por 16 e escrevemos o restante ao lado como o dígito menos significativo.
Esse processo é continuado dividindo o quociente por 16 e escrevendo o resto até que o quociente seja 0. Ao realizar a divisão, os restos que representarão o equivalente hexadecimal do número decimal são escritos começando no dígito menos significativo (à direita) e cada novo dígito é escrito no próximo dígito mais significativo (à esquerda) do dígito anterior.
Vamos aprender com um exemplo. Pegamos o número decimal 15038 que obtivemos após a conversão acima. Com isso, também podemos verificar a conversão acima e vice-versa.
Divisão |
Quociente |
Restante |
Número hexadecimal |
15038 / 16 |
939 |
14 ( E H) |
E |
939 / 16 |
58 |
11 ( B H) |
SER |
58 / 16 |
3 |
10 ( A H) |
ABE |
3 / 16 |
0 |
3 ( 3 H) |
03ABE |
Assim, obtemos o número hexadecimal 03ABE H, equivalente ao número decimal 15038 e, dessa forma, voltamos ao número original. É o que deveríamos esperar.
A tabela fornecida a seguir pode ajudar a obter uma busca rápida de conversão de números hexadecimais para números decimais e vice-versa no intervalo de 0 a 255 números decimais.
Nesta tabela Square há 16 linhas, começando de 0 a A e há 16 colunas também começando de 0 a A. Nesta tabela você pode encontrar o valor decimal de qualquer número hexadecimal que esteja entre o intervalo de 0H a FFH. Isso significa que o valor decimal do número deve estar entre o intervalo de 0 a 255 números decimais.
- Encontrando o valor decimal para o número hexadecimal na tabela acima: Na tabela acima, o número de linhas representa o primeiro dígito hexadecimal (dígito hexadecimal esquerdo) e o número de colunas representa o segundo dígito hexadecimal (dígito hexadecimal direito) do número hexadecimal.
Vamos ter qualquer número hexadecimal, digamos ACH, para ser convertido no número decimal equivalente. Então, veremos o valor decimal na coluna Cth da linha Ath na tabela e obteremos o valor decimal 172, que é o número decimal equivalente para o número hexadecimal ACH.
- Encontrando o valor hexadecimal para o número decimal na tabela acima: Na tabela acima, o número de linhas representa o primeiro dígito hexadecimal (dígito hexadecimal esquerdo) e o número de colunas representa o segundo dígito hexadecimal (dígito hexadecimal direito) do número hexadecimal. Portanto, se você tiver qualquer número decimal para ser convertido em um número hexadecimal equivalente, pesquise o número na tabela e encontre o valor hexadecimal equivalente da seguinte maneira:
Valor hexadecimal para o número decimal = (número da linha)(número da coluna)
Por exemplo, se você quiser encontrar o número de valor hexadecimal equivalente para o número decimal 154, veja a localização do número na tabela. O número 154 está na 9ª linha e coluna Ath da tabela. Assim, o valor hexadecimal equivalente para o número decimal 154 é 9AH.
Código ASCII
A abreviação ASCII significa American Standard Code for Information Interchange. É um padrão de codificação para caracteres, números e símbolos que é o mesmo que os primeiros 128 caracteres do conjunto de caracteres ASCII, mas difere dos caracteres restantes. Esses outros caracteres são geralmente chamados de caracteres ASCII especiais de caracteres estendidos que foram definidos pela IBM.
Os primeiros 32 caracteres que são códigos ASCII de 0 a 1FH formam um conjunto especial de caracteres não imprimíveis. Esses caracteres são chamados de caracteres de controle porque eles realizam várias operações de controle de impressora e exibição em vez de exibir símbolos. Esses caracteres foram listados na tabela de caracteres ASCII fornecida neste capítulo. Esses caracteres de controle têm os seguintes significados:
ZERO (Zero):
Nenhum caractere. Ele é usado para preencher tempo ou preencher espaço na superfície (como a superfície do prato) do dispositivo de armazenamento onde não há dados. Usaremos esse caractere quando estivermos programando limpadores de dados (destrutivos e não destrutivos) para limpar o espaço não alocado para que os dados excluídos não possam ser recuperados por ninguém ou por nenhum programa.
SOH (Início do Título):
Este caractere é usado para indicar o início do título, que pode conter informações de endereço ou rota.
TX (Início do texto):
Este caractere é usado para indicar o início do texto e, dessa forma, também é usado para indicar o final do título.
ETX (Fim do texto):
Este caractere é usado para encerrar o texto que foi iniciado com STX.
EOT (Fim da Transmissão):
Este caractere indica o fim da transmissão, que pode ter incluído um ou mais “testes” com seus títulos.
ENQ (Consulta):
É uma solicitação para uma resposta de uma estação remota. É uma solicitação para uma estação se identificar.
ACK (Reconhecer):
É um caractere, transmitido por um dispositivo receptor como uma resposta de afirmação a uma lixadeira. É usado como uma resposta positiva a mensagens de votação.
BEL (Sino):
É usado quando há necessidade de chamar a atenção humana. Pode controlar dispositivos de alarme ou atenção. Você pode ouvir um tom de campainha nos alto-falantes conectados ao seu computador quando você digita esse caractere no prompt de comando, conforme mostrado abaixo:
C:\> Eco ^G
Aqui ^G é impresso pela combinação das teclas Ctrl + G.
BS (Backspace):
Este caractere indica o movimento do mecanismo de impressão ou do cursor de exibição para trás em uma posição.
HT (Guia horizontal):
Indica o movimento do mecanismo de impressão ou cursor de exibição para a próxima “Tab” pré-atribuída ou posição de parada.
LF (Avanço de linha):
Indica o movimento do mecanismo de impressão ou do cursor de exibição para o início da próxima linha.
VT (Guia vertical):
Indica o movimento do mecanismo de impressão ou do cursor de exibição para a próxima de uma série de linhas de impressão pré-atribuídas.
FF (Avanço de formulário):
Indica o movimento do mecanismo de impressão ou cursor de exibição para a posição inicial da próxima página, de ou na tela.
CR (Retorno de carro):
Indica o movimento do mecanismo de impressão ou do cursor de exibição para a posição inicial da mesma linha.
SO (Mudança para fora):
Indica que as combinações de código a seguir devem ser interpretadas como fora do conjunto de caracteres padrão até que um caractere Shift In seja alcançado.
Eu (Mudança de Entrada):
Indica que as combinações de códigos a seguir devem ser interpretadas de acordo com o conjunto de caracteres padrão.
DLE (Escape de Link de Dados):
É um caractere que deve mudar o significado de um ou mais caracteres contíguos seguintes. Ele pode fornecer controle suplementar ou permitir o envio de caracteres de dados tendo qualquer combinação de bits.
DC1, DC2, DC3 e DC4 (Controles do dispositivo):
Esses são os caracteres para o controle de dispositivos auxiliares ou recursos especiais do terminal.
NAK (Reconhecimento Negativo):
É um caractere transmitido por um dispositivo receptor como uma resposta negativa a um remetente. É usado como uma resposta negativa à mensagem de polling.
SYN (Síncrono/Ocioso):
é usado por um sistema de transmissão síncrona para obter sincronização quando nenhum dado está sendo enviado. Um sistema de transmissão síncrona pode enviar caracteres SYN continuamente.
ETB (Fim do Bloco de Transmissão):
Este caractere indica o fim de um bloco de dados para fins de comunicação. Ele é usado para bloquear dados, onde a estrutura do bloco não está necessariamente relacionada ao formato de processamento.
CAN (Cancelar): Indica que os dados que o precedem em uma mensagem ou bloco devem ser desconsiderados, geralmente porque um erro foi detectado.
EM (Fim do Meio): indica o fim físico de uma fita, superfície (geralmente do prato de um disco) ou outro meio ou o fim da porção necessária ou utilizada do meio.
SUB (Substituto): É um substituto para um caractere que é considerado errôneo ou inválido.
ESC (Escape): É um caractere que tem a finalidade de fornecer extensão de código, pois dá a um número especificado de caracteres consecutivos um significado alternativo.
FS (Separador de Arquivo): Este caractere é usado como um caractere separador de arquivo.
GS (Separador de Grupo): É usado como um caractere separador de grupo.
RS (Record Separator): É usado como um caractere separador de registro.
EUA (separador unido):
É um caractere separador unido.
O segundo grupo de 32 códigos de caracteres ASCII tem vários símbolos de pontuação, caracteres especiais e dígitos numéricos. Os caracteres mais notáveis neste grupo incluem os seguintes:
caractere de espaço (código ASCII 20H) dígitos numéricos de 0 a 9 (códigos ASCII de 30h a 39h) símbolos matemáticos e lógicos
SP (Espaço):
É um caractere não imprimível usado para separar palavras ou para mover o mecanismo de impressão ou para exibir o cursor para frente em uma posição.
O terceiro grupo de 32 caracteres ASCII é o grupo de caracteres alfabéticos maiúsculos. Os códigos ASCII para os caracteres de A a Z estão no intervalo de 41H a 5AH. Como há apenas 26 caracteres alfabéticos diferentes, os seis códigos restantes contêm vários símbolos especiais.
O quarto grupo de 32 códigos de caracteres ASCII é o grupo de símbolos alfabéticos minúsculos, cinco símbolos especiais adicionais e outro caractere de controle delete.
DEL (Apagar):
Ele é usado para eliminar caracteres indesejados, ou melhor, para excluir os caracteres indesejados.
Foram mostradas duas tabelas a seguir, representando os códigos ASCII e Caracteres Estendidos. A primeira tabela representa todos os quatro grupos de diferentes tipos de caracteres descritos. Esta tabela é uma representação de dados e uma tabela ASCII, conforme mostrado a seguir:
Representação de dados e tabela de código ASCII:
HEX | DEZ | CHR | CTRL |
---|
00 | 0 | NULO | ^@ |
01 | 1 | SOH | ^Um |
02 | 2 | STX | ^B |
03 | 3 | ETX | ^C |
04 | 4 | Fim de semana | ^D |
05 | 5 | ENQ | ^E |
06 | 6 | ACK | ^F |
07 | 7 | BEL | ^G |
08 | 8 | BS | ^H |
09 | 9 | HT | ^Eu |
0A | 10 | LF | ^J |
0B | 11 | VT | ^K |
0C | 12 | FF | ^eu |
0D | 13 | CR | ^M |
0E | 14 | ENTÃO | ^N |
0F | 15 | E | ^O |
10 | 16 | DE ACORDO COM | ^P |
11 | 17 | DC1 | ^Q |
12 | 18 | DC2 | ^R |
13 | 19 | DC3 | ^S |
14 | 20 | DC4 | ^T |
15 | 21 | DESEJADO | ^Você |
16 | 22 | DELE | ^V |
17 | 23 | ETB | ^O |
18 | 24 | PODE | ^X |
19 | 25 | EM | ^E |
1A | 26 | SUB | ^Z |
1B | 27 | ESC |
1C | 28 | FS |
1D | 29 | GS |
1E | 30 | RS |
1ºF | 31 | NÓS |
HEX | DEZ | CHR |
---|
20 | 32 | SP |
21 | 33 | ! |
22 | 34 | " |
23 | 35 | # |
24 | 36 | $ |
25 | 37 | % |
26 | 38 | & |
27 | 39 | ' |
28 | 40 | ( |
29 | 41 | ) |
2A | 42 | * |
2B | 43 | + |
2C | 44 | , |
2D | 45 | - |
2E | 46 | . |
2º andar | 47 | / |
30 | 48 | 0 |
31 | 49 | 1 |
32 | 50 | 2 |
33 | 51 | 3 |
34 | 52 | 4 |
35 | 53 | 5 |
36 | 54 | 6 |
37 | 55 | 7 |
38 | 56 | 8 |
39 | 57 | 9 |
3A | 58 | : |
3B | 59 | ; |
3C | 60 | < |
3D | 61 | = |
3E | 62 | > |
3F | 63 | ? |
HEX | DEZ | CHR |
---|
40 | 64 | @ |
41 | 65 | UM |
42 | 66 | B |
43 | 67 | C |
44 | 68 | E |
45 | 69 | E |
46 | 70 | F |
47 | 71 | G |
48 | 72 | E |
49 | 73 | EU |
4A | 74 | Eu |
4B | 75 | E |
4C | 76 | eu |
4D | 77 | M |
4E | 78 | Não |
4F | 79 | O |
50 | 80 | P |
51 | 81 | Pq |
52 | 82 | R |
53 | 83 | S |
54 | 84 | E |
55 | 85 | EM |
56 | 86 | Em |
57 | 87 | EM |
58 | 88 | X |
59 | 89 | E |
5A | 90 | COM |
5B | 91 | [ |
5C | 92 | \ |
5D | 93 | ] |
5E | 94 | ^ |
5F | 95 | _ |
HEX | DEZ | CHR |
---|
60 | 96 | ` |
61 | 97 | um |
62 | 98 | b |
63 | 99 | c |
64 | 100 | e |
65 | 101 | e |
66 | 102 | e |
67 | 103 | g |
68 | 104 | o |
69 | 105 | eu |
6A | 106 | eu |
6B | 107 | o |
6C | 108 | eu |
6D | 109 | eu |
6E | 110 | não |
6F | 111 | o |
70 | 112 | p |
71 | 113 | q |
72 | 114 | r |
73 | 115 | e |
74 | 116 | para |
75 | 117 | em |
76 | 118 | em |
77 | 119 | Em |
78 | 120 | x |
79 | 121 | e |
7A | 122 | Com |
7B | 123 | {[} |
7C | 124 | | |
7D | 125 | } |
7E | 126 | ~ |
7F | 127 | DO |
A próxima tabela mostra o conjunto de 128 caracteres ASCII especiais, que geralmente são chamados de caracteres ASCII estendidos:
HEX | DEZ | CHR |
---|
80 | 128 | O que |
81 | 129 | você |
82 | 130 | é |
83 | 131 | um |
84 | 132 | um |
85 | 133 | tem |
86 | 134 | para |
87 | 135 | O que |
88 | 136 | vai |
89 | 137 | e |
8A | 138 | E |
8B | 139 | eu |
8C | 140 | Pq |
8D | 141 | em |
8E | 142 | UM |
8F | 143 | Oh |
90 | 144 | É |
91 | 145 | oh |
92 | 146 | Ah, ah |
93 | 147 | Guarda-chuva |
94 | 148 | ele |
95 | 149 | não |
96 | 150 | e |
97 | 151 | ù |
98 | 152 | ÿ |
99 | 153 | ELE |
9A | 154 | você |
9B | 155 | ¢ |
9C | 156 | £ |
9D | 157 | ¥ |
9E | 158 | ₧ |
9F | 159 | ƒ |
A0 | 160 | sobre |
A1 | 161 | em |
A2 | 162 | de |
A3 | 163 | uh |
A4 | 164 | ñ |
HEX | DEZ | CHR |
---|
A5 | 165 | Ñ |
A6 | 166 | ª |
A7 | 167 | º |
A8 | 168 | ¿ |
A9 | 169 | ⌐ |
AA | 170 | ¬ |
Sobre | 171 | ½ |
AC | 172 | ¼ |
ANÚNCIO | 173 | ¡ |
MAS | 174 | « |
DE | 175 | » |
B0 | 176 | ░ |
B1 | 177 | ▒ |
B2 | 178 | ▓ |
B3 | 179 | │ |
B4 | 180 | ┤ |
B5 | 181 | ╡ |
B6 | 182 | ╢ |
B7 | 183 | ╖ |
B8 | 184 | ╕ |
B9 | 185 | ╣ |
NÃO | 186 | ║ |
BB | 187 | ╗ |
AC | 188 | ╝ |
BD | 189 | ╜ |
SER | 190 | ╛ |
BF | 191 | ┐ |
C0 | 192 | └ |
C1 | 193 | ┴ |
C2 | 194 | ┬ |
C3 | 195 | ├ |
C4 | 196 | ─ |
C5 | 197 | ┼ |
C6 | 198 | ╞ |
C7 | 199 | ╟ |
C8 | 200 | ╚ |
C9 | 201 | ╔ |
HEX | DEZ | CHR |
---|
QUE | 202 | ╩ |
CB | 203 | ╦ |
CC | 204 | ╠ |
CD | 205 | ═ |
ESSE | 206 | ╬ |
FC | 207 | ╧ |
D0 | 208 | ╨ |
D1 | 209 | ╤ |
D2 | 210 | ╥ |
D3 | 211 | ╙ |
D4 | 212 | ╘ |
D5 | 213 | ╒ |
D6 | 214 | ╓ |
D7 | 215 | ╫ |
D8 | 216 | ╪ |
D9 | 217 | ┘ |
E | 218 | ┌ |
BD | 219 | █ |
Distrito de Columbia | 220 | ▄ |
DD | 221 | ▌ |
DE | 222 | ▐ |
DF | 223 | ▀ |
E0 | 224 | UM |
E1 | 225 | SS |
E2 | 226 | Com |
E3 | 227 | não |
E4 | 228 | Com |
E5 | 229 | com |
E6 | 230 | µ |
E7 | 231 | E |
E8 | 232 | F |
E9 | 233 | EU |
SIM | 234 | Pensamento |
EB | 235 | G |
UE | 236 | ∞ |
DE | 237 | e |
EE | 238 | E |
HEXADECIMAL | DEZEMBRO | CDH |
---|
SE | 239 | ∩ |
F0 | 240 | ≡ |
F1 | 241 | ± |
F2 | 242 | ≥ |
F3 | 243 | ≤ |
F4 | 244 | ⌠ |
F5 | 245 | ⌡ |
F6 | 246 | ÷ |
F7 | 247 | ≈ |
F8 | 248 | ° |
F9 | 249 | ∙ |
MAS | 250 | · |
Facebook | 251 | √ |
FC | 252 | ⁿ |
FD | 253 | ² |
EF | 254 | ■ |
FF | 255 | |
Alguns termos importantes do sistema numérico que são frequentemente usados para representar e armazenar dados
A tabela abaixo mostra os vários prefixos que são usados como prefixos fracionários e aumentativos:
Byte:
O uso mais importante de um byte é armazenar um código de caractere. Já discutimos isso antes.
Quilobyte
Tecnicamente, um kilobyte é igual a 1024 bytes, mas muitas vezes é usado vagamente como sinônimo de 1000 bytes. Em sistemas decimais, quilo é igual a 1000, mas em sistemas binários, quilo é igual a 1024 (210).
Um kilobyte é geralmente representado por K ou Kb. Para distinguir entre o K decimal (1000) e o K binário (1024), o padrão IEEE (Instituto de Engenheiros Elétricos e Eletrônicos) propôs seguir a convenção de usar uma letra minúscula k para quilo decimal e uma letra maiúscula K para quilo binário, mas essa convenção não é de forma alguma seguida rigorosamente.
Megabyte
Um megabyte é usado para descrever o armazenamento de dados de 1.048.576 (220) bytes, mas quando é usado para descrever velocidades de transferência de dados, como MB/s, ele se refere a um milhão de bytes. Megabyte é geralmente abreviado como M ou MB.
Gigabyte
Um gigabyte é usado para descrever um armazenamento de 1.073.741.824 (230) bytes, e um gigabyte é igual a 1.024 megabytes. Gigabyte geralmente é abreviado para G ou GB.
Terabyte
Um terabyte é igual a 1.099.511.627.776 (240) bytes, o que equivale a aproximadamente 1 trilhão de bytes. Um terabyte às vezes é descrito como 1012 (1.000.000.000.000) bytes, o que é exatamente um trilhão.
Petabyte
Um petabyte é descrito como 1.125.899.906.842.624 (250) bytes. Um petabyte é igual a 1.024 terabytes.
Exabyte
Um exabyte é descrito como 1.152.921.504.606.846.976 (260) bytes. Um exabyte é igual a 1.024 petabytes.
Zetabytes
Um zettabyte é descrito como 1.180.591.620.717.411.303.424 (270) bytes, o que equivale a aproximadamente 1.021 (1.000.000.000.000.000.000.000) bytes. Um zettabyte é igual a 1,024 exabytes.
Yottabyte
Um Yottabyte é descrito como 1.208.925.819.614.629.174.706.176 (280) bytes, o que é aproximadamente 1.024 (1.000.000.000.000.000.000.000.000) bytes. Yottabyte é igual a 1,024 Zettabyte.
Termos gerais de armazenamento de dados
Existem nomes diferentes usados para se referir aos termos fornecidos anteriormente para diferentes grupos de bits de dados. Alguns dos mais comumente usados estão listados na tabela a seguir:
Prazo final |
Número de bits |
Página / Número / Bandeira |
1 |
Mordida / Mordida |
4 |
Byte/Caractere |
8 |
Palavra |
16 |
Palavra dupla / Palavra longa |
32 |
Palavra muito longa |
64 |