Capítulo – 4
Sistemas Numéricos
Introdução
É muito comum na programação de recuperação de dados ou em qualquer outra programação de solução de problemas de disco lidar com os diferentes tipos de sistemas numéricos simultaneamente para executar uma única tarefa ou até mesmo um trabalho muito pequeno, como calcular os locais específicos de MBR(s) estendido(s) ) em termos de CHS (Cilindros, Cabeças e Setores) e esses locais orientam o programador ao longo da(s) operação(ões).
Provavelmente a maioria dos programadores iniciantes encontra o problema ou confusão ao converter diferentes tipos de sistemas numéricos um para o outro ao tentar aprender programação em nível de sistema baseado em linguagem assembly e quando o uso de sistemas numéricos binários e hexadecimais é obrigatório.
Neste capítulo, discutiremos muitos conceitos importantes, incluindo os sistemas de numeração binário, decimal, hexadecimal e também a organização de dados binários, como conversão de bits, nibbles, bytes, palavras e palavras duplas etc. e muitos outros tópicos relacionados de sistemas numéricos.
A maioria dos sistemas de computador modernos não representa valores numéricos usando o sistema decimal, mas geralmente usa um sistema de numeração binário ou complemento de 2.
Existem quatro bases numéricas comumente usadas na programação,Binário, octal, decimal e hexadecimal. No entanto, na maioria das vezes nos deparamos com sistemas numéricos binários, decimais e hexadecimais. Esses sistemas de numeração foram diferenciados de acordo com seu número base.
Todo sistema de numeração tem seu próprio número base e símbolo de representação. Apresentei esses quatro números na tabela a seguir:
Name of Number System |
Base Number |
Symbol Used for Representation |
Binary |
2 |
B |
Octal |
8 |
Q or O |
Decimal |
10 |
D or None |
Hexadecimal |
16 |
H |
Sistema de numeração decimal
O sistema de numeração decimal usa a base 10 e inclui os dígitos de 0 a 9. Não se confunda, é o sistema de numeração comum que usamos em nossa vida diária para calcular as coisas. Os valores ponderados das potências para cada posição serão os seguintes:
Dessa forma, se eu tiver um 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 dar um exemplo de qualquer número decimal fracionário. Vamos ter um número 821.128. Cada dígito que aparece à esquerda da vírgula representa um valor entre zero e nove e a potência de dez é representada por sua posição no número (a partir de 0).
Os dígitos que aparecem à direita do ponto decimal representam um valor entre zero e nove vezes 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 de Número 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, a tensão 0V é geralmente representada pela lógica 0 e a tensão +3,3 V ou +5V é representada pela lógica 1. Assim, com dois níveis podemos representar exatamente dois valores diferentes. Esses podem ser 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 pelo computador e os dois dígitos usados no sistema de numeração binário, não é surpresa que os computadores empreguem o sistema binário.
O sistema numérico binário funciona como o sistema numérico decimal, exceto que o sistema numérico binário usa a base 2 e inclui apenas os dígitos 0 e 1, e o uso de qualquer outro dígito tornaria o número um número binário inválido.
Os valores ponderados para cada posição são representados da seguinte forma:
A tabela a seguir mostra a representação do número binário em relação aos números decimais:
Decimal Number |
Binary Number Representation |
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 |
Normalmente, no caso de números decimais, cada três dígitos decimais são separados por uma vírgula para facilitar a leitura de números maiores. Por exemplo, é muito mais fácil ler um número 840.349.823 do que 840349823.
Inspirando-se na mesma ideia, existe uma convenção semelhante para números binários para que seja 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.
Por exemplo se o valor binário for 1010011001101011, ele será escrito como 1010 0110 0110 1011.
Conversão de número binário para decimal
Para converter o número binário para o número decimal, multiplicamos cada dígito por sua posição ponderada e somamos cada um dos valores ponderados. 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úmero decimal para binário
Para converter qualquer número decimal em seu sistema de numeração binário, o método geral é dividir o número decimal por 2, se o resto for 0, no lado anote um 0. Se o resto for 1, anote um 1.
Este processo continua 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 pelo dígito menos significativo (direita) e cada novo dígito é escrito no dígito mais significativo (a 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.
Division |
Quotient |
Remainder |
Binary Number |
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 é para esclarecer todas as etapas da conversão, mas na prática e para obter a facilidade e a velocidade da conversão, você pode seguir a seguinte maneira para obter os resultados.
Seja 1980 qualquer número decimal a ser convertido em seu equivalente binário. Do que seguindo o método dado na tabela, resolveremos este 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 a abreviação 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:
Name |
Size in bits |
Example |
Bit |
1 |
1 |
Nibble |
4 |
0101 |
Byte |
8 |
0000 0101 |
Word |
16 |
0000 0000 0000 0101 |
Double Word |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
Podemos adicionar quantos zeros à esquerda desejarmos sem alterar seu valor em qualquer 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 como em diferentes casos, conforme mostrado na tabela:
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
Nibble |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
Byte |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Word |
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 é normalmente chamado de Bit Mais Significativo ou MSB. Informe-nos sobre esses formatos de representação:
O pedaço
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 (verdadeiro/falso), então esse bit representa verdadeiro ou falso.
A mordida
O Nibble vem especialmente na área de interesse quando estamos falando sobre os sistemas numéricos, BCD (Binary Coded Decimal) ou/e 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 BCD ou dígito 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 os dígitos hexadecimais e BCD são os itens primários que podemos representar com um único nibble. A representação em nível de bit de 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 programas de microprocessador 80x86 é um valor de 8 bits.
Para acessar qualquer coisa menor, é necessário 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 de um byte é armazenar um código de caractere. Os bits em um byte são numerados do bit zero (b0) a sete (b7) como segue:
O bit 0 (b0) é o bit de ordem inferior ou o bit menos significativo e o bit 7 (b7) é o bit de ordem superior ou o bit mais significativo do byte.
Como aqui, vemos que um byte contém exatamente dois nibbles, onde os bits b0 a b3 compreendem o nibble de baixa ordem e os bits b4 a b7 formam o nibble de alta ordem.
Como um byte contém exatamente dois nibbles, os valores de byte exigem dois dígitos hexadecimais.
Como o computador moderno tradicional é uma máquina endereçável por byte, é 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 de 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 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 com sinal no intervalo de -128 a +127
- Códigos de caracteres ASCII
- E outros tipos de dados especiais que não exigem mais de 256 valores diferentes, pois muitos tipos de dados têm menos de 256 itens, portanto, 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 têm 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 em 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 bits será a seguinte:
Onde o bit 0 é o LSB (Bit Menos Significativo) e o bit 15 é o MSB (Bit Mais Significativo). Quando há necessidade de referenciar os outros bits em uma palavra, seu número de posição de bit é usado para referenciá-los.
Dessa forma, uma palavra contém exatamente dois bytes, de modo que do bit b0 ao bit b7 formam o byte de menor ordem e os bits b8 a b15 formam o byte de maior ordem. Com uma palavra de 16 bits, podemos representar 216 (65536) valores diferentes. Esses valores podem ser dos seguintes:
- Os valores numéricos sem sinal no intervalo de 0 a 65.535.
- Os valores numéricos com sinal no intervalo de -32.768 a +32.767
- Qualquer tipo de dados com no máximo 65.536 valores. Desta forma, as palavras são usadas principalmente para:
- Valores de dados inteiros de 16 bits
- endereços de memória de 16 bits
- Qualquer sistema numérico que exija 16 bits ou menos
A palavra dupla
Uma palavra dupla é exatamente de acordo com seu nome e são duas palavras. Portanto, uma quantidade de palavras duplas é de 32 bits. A palavra dupla também pode ser dividida em uma palavra de ordem superior e uma palavra de ordem inferior, quatro bytes ou oito nibbles etc.
Dessa forma, a palavra Double pode representar todos os tipos de dados diferentes. Pode ser do seguinte:
- Uma palavra dupla sem sinal no intervalo de 0 a 4.294.967.295,
- Uma palavra dupla sinalizada no intervalo de -2.147.483.648 a 2.147.483.647,
- Um valor de ponto flutuante de 32 bits
- Ou qualquer outro dado que exija 32 bits ou menos.
Sistema de numeração octal
O sistema de numeração octal era popular em sistemas de computador antigos, mas é muito raramente usado hoje. No entanto, tomaremos um ideal do Sistema Octal apenas para conhecimento.
O sistema Octal é baseado no sistema binário com limite de 3 bits. O sistema de numeração 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 mostrados a seguir na tabela:
(base)power |
85 |
84 |
83 |
82 |
81 |
80 |
Value |
32768 |
4096 |
512 |
64 |
8 |
1 |
Conversão de binário para octal
Para converter de um número binário inteiro para octal, seguimos as duas etapas a seguir:
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. Tomemos um exemplo para melhor entendê-lo. Se dermos qualquer número binário, digamos 11001011010001, para converter em sistema numérico octal, aplicaremos acima de duas etapas a esse número da seguinte maneira:
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Equivalent number |
3 |
1 |
3 |
2 |
1 |
Assim, o Número Octal, Equivalente a O 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 as duas etapas 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. Tomemos um exemplo. Se tivermos qualquer número inteiro octal 31321(Q) para converter em seu número binário correspondente, aplicaremos as duas etapas acima da seguinte forma:
Equivalent number |
3 |
1 |
3 |
2 |
1 |
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Assim, 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 por seu peso octal e somamos cada valor.
Vamos dar um exemplo para entender melhor. Vamos ter qualquer número octal 31321Q para ser convertido em seu número decimal correspondente. Então vamos seguir 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 este método, dividimos o número decimal por 8 e escrevemos o resto do lado como o dígito menos significativo. Este processo continua 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 anterior dígito.
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.), esse método foi descrito na tabela a seguir.:
Division |
Quotient |
Remainder |
Octal Number |
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 com o número original. É isso que devemos esperar. Esta tabela foi 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 trabalhar e economizar tempo também. Ambos 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 em 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:
Os números hexadecimais são muito compactos. E é fácil converter de hexadecimal para binário e binário para hexadecimal. Quando formos calcular muitas coisas importantes como Número de Cilindros, Cabeças e Setores de um disco rígido ou usar programas editores de disco rígido para analisar diferentes características e problemas, precisaremos do bom conhecimento do sistema Hex. 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:
Binary |
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 os valores decimais de 0 a 16.
Os valores ponderados para cada posição para números hexadecimais foram mostrados na tabela a seguir:
(Base)power |
163 |
162 |
161 |
160 |
Value |
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 esquerdo para garantir que o número binário contenha múltiplos de quatro bits. Depois disso, siga as duas etapas a seguir:
Primeiro, divida o número binário em seções de 4 bits do LSB ao MSB. E, em seguida, 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. Em seguida, aplicaremos as duas etapas acima, conforme mostrado abaixo:
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Hexadecimal value |
4 |
E |
D |
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 as duas etapas a seguir:
Primeiro, converta o número hexadecimal em 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 esses dois passos nele da seguinte forma
Hexadecimal value |
4 |
E |
D |
3 |
4-bit binary number section |
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 por seu peso hexadecimal e somamos 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
Assim, 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 resto do lado como o dígito menos significativo.
Este processo continua 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 pelo 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 o 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.
Division |
Quotient |
Remainder |
Hex Number |
15038 / 16 |
939 |
14 (E H) |
E |
939 / 16 |
58 |
11 (B H) |
BE |
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 desta forma voltamos ao número original. É isso que devemos esperar.
A tabela a seguir pode ajudar a obter a pesquisa rápida de conversão de número hexadecimal para número decimal e vice-versa no intervalo de 0 a 255 números decimais.
Nesta tabela quadrada 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 da 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.
Tenhamos 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 da 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 algum número decimal a ser convertido em número hexadecimal equivalente, pesquise o número na tabela e encontre o valor hexadecimal equivalente da seguinte forma:
Valor hexadecimal para o número decimal = (Número da linha)(Número da coluna)
Por exemplo, se você deseja encontrar o número do valor hexadecimal equivalente para o número decimal 154, consulte 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 abreviatura ASCII significa American Standard Code for Information Interchange. É um padrão de codificação para caracteres, números e símbolos que é igual aos 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 esses caracteres executam 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:
NUL (Nulo):
Nenhum personagem. É usado para preencher o tempo ou o 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 para limpadores de dados (ambos destrutivos e não destrutivos) para eliminar 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 cabeçalho, que pode conter informações de endereço ou roteamento.
TX (Início do Texto):
Este caractere é usado para indicar o início do texto e desta 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):
É um pedido de resposta de uma estação remota. É um pedido para que uma estação se identifique.
ACK (Reconhecer):
É um caractere, transmitido por um dispositivo receptor como resposta de afirmação a uma lixadeira. É usado como uma resposta positiva às mensagens de sondagem.
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 indicado 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 exibe o cursor 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 (alimentação de linha):
Indica o movimento do mecanismo de impressão ou cursor de exibição para o início da próxima linha.
VT (guia vertical):
Indica o movimento do mecanismo de impressão ou cursor de exibição para a próxima de uma série de linhas de impressão pré-atribuídas.
FF (Feed 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 tela.
CR (Retorno de carro):
Indica o movimento do mecanismo de impressão ou cursor de exibição para a posição inicial da mesma linha.
SO (Shift Out):
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):
Indica que as combinações de código a seguir devem ser interpretadas de acordo com o conjunto de caracteres padrão.
DLE (Escape de link de dados):
É um caractere que deve alterar o significado de um ou mais caracteres contíguos. Ele pode fornecer controle suplementar ou permitir o envio de caracteres de dados com qualquer combinação de bits.
DC1, DC2, DC3 e DC4 (Controles do dispositivo):
Estes 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 resposta negativa a um remetente. É usado como uma resposta negativa à mensagem de pesquisa.
SYN (Síncrono/ Inativo):
é 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. É 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 (End of Medium): Indica o fim físico de uma fita, superfície (geralmente de um prato de disco) ou outro meio ou fim da parte necessária ou usada do meio.
SUB (substituto): é um substituto para um caractere que é considerado incorreto ou inválido.
ESC (Escape): é um caractere destinado a fornecer extensão de código, pois fornece um significado alternativo a um número especificado de caracteres continuamente seguintes.
FS (File Separator): Este caractere é usado como um caractere separador de arquivo.
GS (Group Separator): É usado como um caractere separador de grupo.
RS (Separador de Registros): É usado como caractere separador de registros.
EUA (United Separator):
É 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 personagens mais notáveis neste grupo incluem o seguinte:
space character (ASCII code 20H)
numeric digits 0 through 9 (ASCII codes 30h through 39h)
mathematical and logical symbols
SP (Espaço):
É um caractere não imprimível usado para separar palavras ou mover o mecanismo de impressão ou 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 A a Z estão no intervalo de 41H a 5AH. Como existem 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 excluído.
DEL (Excluir):
Ele é usado para eliminar caracteres indesejados, em vez disso, podemos dizer para excluir os caracteres indesejados.
Foram mostradas duas tabelas a seguir, representando os códigos ASCII e os caracteres estendidos. A primeira tabela representa todos os quatro grupos de diferentes tipos de caracteres descritos. Esta tabela é a representação de dados e a tabela ASCII, conforme mostrado a seguir:
Representação de dados e tabela de códigos ASCII:
HEX |
DEC |
CHR |
CTRL |
00 |
0 |
NUL |
^@ |
01 |
1 |
SOH |
^A |
02 |
2 |
STX |
^B |
03 |
3 |
ETX |
^C |
04 |
4 |
EOT |
^D |
05 |
5 |
ENQ |
^E |
06 |
6 |
ACK |
^F |
07 |
7 |
BEL |
^G |
08 |
8 |
BS |
^H |
09 |
9 |
HT |
^I |
0A |
10 |
LF |
^J |
0B |
11 |
VT |
^K |
0C |
12 |
FF |
^L |
0D |
13 |
CR |
^M |
0E |
14 |
SO |
^N |
0F |
15 |
SI |
^O |
10 |
16 |
DLE |
^P |
11 |
17 |
DC1 |
^Q |
12 |
18 |
DC2 |
^R |
13 |
19 |
DC3 |
^S |
14 |
20 |
DC4 |
^T |
15 |
21 |
NAK |
^U |
16 |
22 |
SYN |
^V |
17 |
23 |
ETB |
^W |
18 |
24 |
CAN |
^X |
19 |
25 |
EM |
^Y |
1A |
26 |
SUB |
^Z |
1B |
27 |
ESC |
1C |
28 |
FS |
1D |
29 |
GS |
1E |
30 |
RS |
1F |
31 |
US |
HEX |
DEC |
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 |
. |
2F |
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 |
DEC |
CHR |
40 |
64 |
@ |
41 |
65 |
A |
42 |
66 |
B |
43 |
67 |
C |
44 |
68 |
D |
45 |
69 |
E |
46 |
70 |
F |
47 |
71 |
G |
48 |
72 |
H |
49 |
73 |
I |
4A |
74 |
J |
4B |
75 |
K |
4C |
76 |
L |
4D |
77 |
M |
4E |
78 |
N |
4F |
79 |
O |
50 |
80 |
P |
51 |
81 |
Q |
52 |
82 |
R |
53 |
83 |
S |
54 |
84 |
T |
55 |
85 |
U |
56 |
86 |
V |
57 |
87 |
W |
58 |
88 |
X |
59 |
89 |
Y |
5A |
90 |
Z |
5B |
91 |
[ |
5C |
92 |
\ |
5D |
93 |
] |
5E |
94 |
^ |
5F |
95 |
_ |
HEX |
DEC |
CHR |
60 |
96 |
` |
61 |
97 |
a |
62 |
98 |
b |
63 |
99 |
c |
64 |
100 |
d |
65 |
101 |
e |
66 |
102 |
f |
67 |
103 |
g |
68 |
104 |
h |
69 |
105 |
i |
6A |
106 |
j |
6B |
107 |
k |
6C |
108 |
l |
6D |
109 |
m |
6E |
110 |
n |
6F |
111 |
o |
70 |
112 |
p |
71 |
113 |
q |
72 |
114 |
r |
73 |
115 |
s |
74 |
116 |
t |
75 |
117 |
u |
76 |
118 |
v |
77 |
119 |
w |
78 |
120 |
x |
79 |
121 |
y |
7A |
122 |
z |
7B |
123 |
{[} |
7C |
124 |
| |
7D |
125 |
} |
7E |
126 |
~ |
7F |
127 |
DEL |
A tabela a seguir mostra o conjunto de 128 caracteres ASCII especiais que geralmente são chamados de caracteres ASCII estendidos:
HEX |
DEC |
CHR |
80 |
128 |
Ç |
81 |
129 |
ü |
82 |
130 |
é |
83 |
131 |
â |
84 |
132 |
ä |
85 |
133 |
à |
86 |
134 |
å |
87 |
135 |
ç |
88 |
136 |
ê |
89 |
137 |
ë |
8A |
138 |
è |
8B |
139 |
ï |
8C |
140 |
î |
8D |
141 |
ì |
8E |
142 |
Ä |
8F |
143 |
Å |
90 |
144 |
É |
91 |
145 |
æ |
92 |
146 |
Æ |
93 |
147 |
ô |
94 |
148 |
ö |
95 |
149 |
ò |
96 |
150 |
û |
97 |
151 |
ù |
98 |
152 |
ÿ |
99 |
153 |
Ö |
9A |
154 |
Ü |
9B |
155 |
¢ |
9C |
156 |
£ |
9D |
157 |
¥ |
9E |
158 |
₧ |
9F |
159 |
ƒ |
A0 |
160 |
á |
A1 |
161 |
í |
A2 |
162 |
ó |
A3 |
163 |
ú |
A4 |
164 |
ñ |
HEX |
DEC |
CHR |
A5 |
165 |
Ñ |
A6 |
166 |
ª |
A7 |
167 |
º |
A8 |
168 |
¿ |
A9 |
169 |
⌐ |
AA |
170 |
¬ |
AB |
171 |
½ |
AC |
172 |
¼ |
AD |
173 |
¡ |
AE |
174 |
« |
AF |
175 |
» |
B0 |
176 |
░ |
B1 |
177 |
▒ |
B2 |
178 |
▓ |
B3 |
179 |
│ |
B4 |
180 |
┤ |
B5 |
181 |
╡ |
B6 |
182 |
╢ |
B7 |
183 |
╖ |
B8 |
184 |
╕ |
B9 |
185 |
╣ |
BA |
186 |
║ |
BB |
187 |
╗ |
BC |
188 |
╝ |
BD |
189 |
╜ |
BE |
190 |
╛ |
BF |
191 |
┐ |
C0 |
192 |
└ |
C1 |
193 |
┴ |
C2 |
194 |
┬ |
C3 |
195 |
├ |
C4 |
196 |
─ |
C5 |
197 |
┼ |
C6 |
198 |
╞ |
C7 |
199 |
╟ |
C8 |
200 |
╚ |
C9 |
201 |
╔ |
HEX |
DEC |
CHR |
CA |
202 |
╩ |
CB |
203 |
╦ |
CC |
204 |
╠ |
CD |
205 |
═ |
CE |
206 |
╬ |
CF |
207 |
╧ |
D0 |
208 |
╨ |
D1 |
209 |
╤ |
D2 |
210 |
╥ |
D3 |
211 |
╙ |
D4 |
212 |
╘ |
D5 |
213 |
╒ |
D6 |
214 |
╓ |
D7 |
215 |
╫ |
D8 |
216 |
╪ |
D9 |
217 |
┘ |
DA |
218 |
┌ |
DB |
219 |
█ |
DC |
220 |
▄ |
DD |
221 |
▌ |
DE |
222 |
▐ |
DF |
223 |
▀ |
E0 |
224 |
α |
E1 |
225 |
ß |
E2 |
226 |
Γ |
E3 |
227 |
π |
E4 |
228 |
Σ |
E5 |
229 |
σ |
E6 |
230 |
µ |
E7 |
231 |
τ |
E8 |
232 |
Φ |
E9 |
233 |
Θ |
EA |
234 |
Ω |
EB |
235 |
δ |
EC |
236 |
∞ |
ED |
237 |
φ |
EE |
238 |
Ε |
HEX |
DEC |
CHR |
EF |
239 |
∩ |
F0 |
240 |
≡ |
F1 |
241 |
± |
F2 |
242 |
≥ |
F3 |
243 |
≤ |
F4 |
244 |
⌠ |
F5 |
245 |
⌡ |
F6 |
246 |
÷ |
F7 |
247 |
≈ |
F8 |
248 |
° |
F9 |
249 |
∙ |
FA |
250 |
· |
FB |
251 |
√ |
FC |
252 |
ⁿ |
FD |
253 |
² |
FE |
254 |
■ |
FF |
255 |
|
Alguns termos importantes do sistema numérico, frequentemente usados para representação de dados e armazenamento de dados
A tabela abaixo representa os vários prefixos que são usados como prefixos fracionários e como prefixos de ampliação:
Byte:
O uso mais importante de um byte é armazenar um código de caractere. Já discutimos isso anteriormente.
Quilobyte
Tecnicamente, um kilobyte é 1024 bytes, mas geralmente é usado livremente como sinônimo de 1000 bytes. Em sistemas decimais, kilo significa 1000, mas em sistemas binários um kilo é 1024 (210).
Kilobyte geralmente é representado por K ou Kb. Para distinguir entre um K decimal (1000) e um K binário (1024), o padrão IEEE (Institute of Electrical and Electronics Engineers) sugeriu seguir a convenção de usar um k minúsculo para um quilo decimal e um K maiúsculo para um quilo binário mas esta convenção não é de forma alguma seguida estritamente.
Megabyte
Megabyte é usado para descrever armazenamento de dados de 1048576 (220) bytes, mas quando é usado para descrever taxas de transferência de dados como em MBps, refere-se a um milhão de bytes. Megabyte é geralmente abreviado como M ou MB.
Gigabyte
Gigabyte é usado para descrever o armazenamento de 1.073.741.824 (230) bytes e Um gigabyte é igual a 1.024 megabytes. Gigabyte é geralmente abreviado como G ou GB.
Terabyte
Terabyte é 1.099.511.627.776 (240) bytes, que é aproximadamente 1 trilhão de bytes. Terabyte às vezes é descrito como 1012 (1.000.000.000.000) bytes, que é exatamente um trilhão.
Petabyte
Petabyte é descrito como 1.125.899.906.842.624 (250) bytes. Um Petabyte é igual a 1.024 terabytes.
Exabyte
Exabyte é descrito como 1.152.921.504.606.846.976 (260) bytes. Um Exabyte é igual a 1.024 Petabyte.
Zetabyte
Zettabyte é descrito como 1.180.591.620.717.411.303.424 (270) bytes, que é aproximadamente 1.021 (1.000.000.000.000.000.000.000) bytes. Um Zettabyte é igual a 1.024 Exabytes.
Yottabyte
Yottabyte é descrito como 1.208.925.819.614.629.174.706.176 (280) bytes, que é aproximadamente 1.024 (1.000.000.000.000.000.000.000.000) bytes. Um Yottabyte é igual a 1.024 Zettabytes.
Termos comuns de armazenamento de dados
Existem vários nomes usados para referir os termos dados anteriormente, a vários agrupamentos de bits de dados. Alguns dos mais comumente usados, foram listados na tabela a seguir:
Term |
Number of Bits |
Bit / Digit / Flag |
1 |
Nibble / Nybble |
4 |
Byte / Character |
8 |
Word |
16 |
Double Word / Long Word |
32 |
Very Long Word |
64 |
Página modificada em: 06/01/2022