# Lógica Digital/Sistemas numéricos

Desde que o ser humano necessitou contabilizar os objetos de seu cotidiano e realizar operações sobre os valores obtidos, ele desenvolveu sistemas numéricos diversos. Entre os diversos sistemas desenvolvidos em todas as épocas, o mais proeminente em nossa sociedade moderna é o sistema decimal, ou seja, o sistema formado por digítos entre 0 e 9, contabilizados de 10 em 10, e cuja combinação pode constituir todos os números possíveis. Porém existem outros sistemas numéricos, utilizados para diversos fins.

## Sistemas numéricos posicionais

Sistema numérico posicional é o nome dado a propriedade de um número variar o seu valor dependendo da posição em que ocupa dentro de uma ordem de valores. Como exemplo, podemos considerar o número 101. O número 1 não representa 1, mas sua posição representa 100 e é diferente do último 1 que representa apenas 1 unidade. Assim podemos considerar que no sistema decimal o valor de cada símbolo depende de sua posição. Ainda que aparentemente isto pareça trivial, ver-se-á que este conceito é de extrema importancia em outros sistemas numéricos posicionais.

## Base de um sistema numérico

A base de um sistema numérico é a quantidade de algarismos utilizados para sua representação. Em nossa atual sociedade a base mais utilizada é a base 10 (decimal) onde contamos com 10 algarismos para representação numérica - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Porém existem outras bases de numeração como a base 12, base 60, base 2 (binária) e base 16 (hexadecimal). Temos que uma base b possuirá b algarismos, variando entre 0 e (b-1).

### Sistema binário

O sistema binário é um sistema de numeração posicional em que todas as quantidades se representam utilizando como base o número dois, com o que se dispõe das cifras: zero e um (0 e 1).
Os computadores digitais trabalham internamente com dois níveis de tensão, pelo que o seu sistema de numeração natural é o sistema binário (aceso, apagado). Com efeito, num sistema simples como este é possível simplificar o cálculo, com o auxílio da lógica booleana. Em computação, chama-se um dígito binário (0 ou 1) de bit, que vem do inglês Binary Digit. Um agrupamento de 8 bits corresponde a um byte (Binary Term). Um agrupamento de 4 bits é chamado de nibble.
O sistema binário é base para a Álgebra booleana (de George Boole - matemático inglês), que permite fazer operações lógicas e aritméticas usando-se apenas dois dígitos ou dois estados (sim e não, falso e verdadeiro, tudo ou nada, 1 ou 0, ligado e desligado). Toda eletrônica digital e computação está baseada nesse sistema binário e na lógica de Boole, que permite representar por circuitos eletrônicos digitais (portas lógicas) os números, caracteres, realizar operações lógicas e aritméticas. Os programas de computadores são codificados sob forma binária e armazenados nas mídias (memórias, discos, etc) sob esse formato.

#### Histórico do sistema binário

O matemático indiano Pingala apresentou a primeira descrição conhecida de um sistema numérico binário no século III aC.
Um conjunto de 8 trigramas e 64 hexagramas, análogos a números binários com precisão de 3 e 6 bits, foram utilizados pelos antigos chineses no texto clássico I Ching. Conjuntos similares de combinações binárias foram utilizados em sistemas africanos de adivinhação tais como o Ifá, bem como na Geomancia do medievo ocidental.
Uma sistematização binária dos hexagramas do I Ching, representando a sequência decimal de 0 a 63, e um método para gerar tais sequências, foi desenvolvida pelo filósofo e estudioso Shao Yong no século XI. Entretanto, não há evidências que Shao Wong chegou à aritmética binária.
O sistema numérico binário moderno foi documentado de forma abrangente por Gottfried Leibniz no século XVIII em seu artigo "Explication de l'Arithmétique Binaire". O sistema de Leibniz utilizou 0 e 1, tal como o sistema numérico binário corrente nos dias de hoje.
Em 1854, o matemático britânico George Boole publicou um artigo fundamental detalhando um sistema lógico que se tornaria conhecido como Álgebra Booleana. Seu sistema lógico tornou-se essencial para o desenvolvimento do sistema binário, particularmente sua aplicação a circuitos eletrônicos.
Em 1937, Claude Shannon produziu sua tese no MIT que implementava Álgebra Booleana e aritmética binária utilizando circuitos elétricos pela primeira vez na história. Intitulado "A Symbolic Analysis of Relay and Switching Circuits", a tese de Shannon praticamente fundou o projeto de circuitos digitais.

#### Operações com binários
##### Binários a decimais

Dado um número N, binário, para expressá-lo em decimal, deve-se escrever cada número que o compõe (bit), multiplicado pela base do sistema (base = 2), elevado à posição que ocupa. Uma posição à esquerda da vírgula representa uma potência positiva e à direita uma potência negativa. A soma de cada multiplicação de cada dígito binário pelo valor das potências resulta no número real representado. Exemplo:
1011(binário)
1 × 2$^3$ + 0 × 2$^2$ + 1 × 2$^1$ + 1 × 2$^0$ = 11
Portanto, 1011 é 11 em decimal

#### Decimais em binários
##### Decimais inteiros em binários

Dado um número decimal inteiro, para convertê-lo em binário, basta dividi-lo sucessivamente por 2, anotando o resto da divisão inteira:
Observe que os números devem ser lidos de baixo para cima: 1100 é 12 em decimal.
Existe um método muito simples para converter binário em decimal, e vice-versa.

##### Decimais fracionários em binários

Exemplo I 0.5625$_{10}$
Parte inteira = 0 $_{10}$ = 0$_2$ Parte fracionária = 0.5625$_{10}$ Multiplica-se a parte fracionária por 2 sucessivamente, até que ela seja igual a zero ou cheguemos na precisão desejada.
Anotando a seqüência de vai-um (carry) na ordem de cima para baixo, temos: 1001 Portanto, 0.5625$_{10}$ = 0.1001$_2$
No entanto, é mais comum nunca zerarmos a fração seguinte da multiplicação. Neste caso, devemos parar as multiplicações quando atingirmos uma certa precisão desejada.
Exemplo II 67.575$_{10}$ Parte inteira = 67$_{10}$ = 1000011$_2$ Parte fracionária = 0.575$_2$
Ou seja, entramos em um ciclo sem fim. Escolhemos uma precisão e finalizamos o processo quando esta precisão for atingida, então na ordem de cima para baixo, temos: 10010011$_2$.

### Sistema octal

Sistema Octal é um sistema de numeração cuja base é 8, ou seja, utiliza 8 símbolos para a representação de quantidade. No ocidente, estes símbolos são os algarismos arábicos: 0 1 2 3 4 5 6 7
O octal foi muito utilizado em informática como uma alternativa mais compacta ao binário na programação em linguagem de máquina. Hoje, o sistema hexadecimal é mais utilizado como alternativa ao binário.
Este sistema também é um sistema posicional e a posição de seus algarismos determinada em relação à vírgula decimal. Caso isso não ocorra, supõe-se implicitamente colocada à direita do número. A aritmética desse sistema é semelhante a dos sistemas decimal e binário, o motivo pelo qual não será apresentada.
Exemplo: - Qual o número decimal representado pelo número octal 4701? Utilizar o TFN. 4 x 8³ + 7 x 8² + 0 x 8¹ + 1 x 8° = = 2048 + 448 + 0 + 1 = 2497

#### Conversões de um sistema para outro
##### Conversão Decimal – Octal

Método de multiplicações sucessivas por 8 É utilizado para converter uma fração decimal para o sistema octal. Multiplica-se a fração decimal por 8, obtendo-se na parte inteira do resultado o primeiro dígito da fração octal resultante. O processo é repetido sucessivamente com a parte fracionária do resultado para obter os dígitos seguintes e termina quando a parte fracionária é nula ou inferior à medida de erro especificada. Exemplo: Converter a fração decimal 0.140625 em octal. 0.140625 x 8 = 1.125
0.125 x 8 = 1.0 Combinamos os dois métodos anteriores podemos converter para octal números decimais com parte inteira e fracionária.

##### Método de subtrair potências de 8

Outro método de conversão de números decimais para o sistema octal que serve para números com partes inteiras e fracionária é o de subtrair potências de 8. é semelhante ao estudado para a conversão decimal – binário e para a sua aplicação é necessária uma tabela de potências de 8.

##### Conversão Octal – Decimal

Existem vários métodos, sendo mais comumente utilizado o proveniente do TFN, em que se faz a conversão de forma direta através da fórmula. Exemplo: Converter o número octal 764 para o sistema decimal 764 (8) = 7 x 8² + 6 x 8¹ + 4 x 8° = 448 + 48 + 4 = 500 (10)

##### Conversão Octal – Binário

Quando existir necessidade de converter números octais em binários, deve-se separar cada dígito do número octal substituí-lo pelo seu valor correspondente de binário. Exemplo: Converter o número octal 1572 em binário.
Logo, 1 5 7 2 = 001 101 111 010

##### Conversão Binário – Octal

Para converter um número binário em octal, executa-se o processo inverso ao anterior. Agrupam-se os dígitos binários de 3 em 3 do ponto decimal para a esquerda e para a direita, substituindo-se cada trio de dígitos binários pelo equivalente dígito octal.
Por exemplo, a conversão do número binário 1010111100 em octal:
001 010 111 100 1 2 7 4
Assim, tem-se 1010111100bin = 1274oct

##### Conversão Octal – Hexadecimal

Para esta conversão é necessário executar um passo intermediário utilizando o sistema binário. Primeiramente converte-se o número octal em binário e depois converte-se o binário para o sistema hexadecimal, agrupando-se os dígitos de 4 em 4 e fazendo cada grupo corresponder a um dígito hexadecimal.
Por, exemplo, a conversão o número octal 1057 em hexadecimal:
Passagem ao binário: 1 0 5 7 001 000 101 111
Passagem ao hexadecimal: 0010 0010 1111 2 2 F
Assim, tem-se 1057oct = 22Fhex

##### Conversão Hexadecimal – Octal

Esta conversão, assim com a anterior, exige um passo intermediário em que se utiliza o sistema binário. Converte-se o número hexadecimal em binário e este em octal. Exemplo: Converter o número hexadecimal 1F4 em octal.
1 F 4 0001 1111 0100
Conversão para octal
0 7 6 4 000 111 110 100

### Sistema hexadecimal

O sistema hexadecimal é um sistema de numeração posicional que representa os números em base 16 —portanto empregando 16 símbolos—.
Está vinculado à informática, pois os computadores costumam utilizar o byte ou octeto como unidade básica de memória; e, devido a um byte representar $2^{8}=256$ valores possíveis, e isto poder representar-se como $2^{8}=2^{4}\cdot 2^{4}=16\cdot 16=1\cdot 16^{2}+0\cdot 16^{1}+0\cdot 16^{0}$, o que, segundo o teorema geral da numeração posicional, equivale ao número em base 16 $100_{16}$, dois dígitos hexadecimais correspondem exactamente —permitem representar a mesma linha de inteiros— a um byte.
Isto fá-lo muito útil para a visualização de vertidos de memória já que permite saber de jeito singelo o valor de cada byte da memória.
Devido ao sistema decimal geralmente usado para a numeração apenas dispor de dez símbolos, deve-se incluir seis letras adicionais para completar o sistema. O conjunto de símbolos fica, portanto, assim:
    $S=\{1,2,3,\cdots ,9,\mathrm {A} ,\mathrm {B} ,\mathrm {C} ,\cdots ,\mathrm {F} \}$
Ter-se-á de notar que $A_{16}=10_{10}$, $B_{16}=11_{10}$ e assim sucessivamente. Também são usadas variedades com letras minúsculas em vez de maiúsculas.

#### Exemplo

Ver-se-á um exemplo numérico para obter o valor duma representação hexadecimal: 3E0,A (16) = 3×16$^2$ + E×16$^1$ + 0×16$^0$ + A×16$^{-1}$ = 3×256 + 14×16 + 0×1 + 10×0,0625 = 992,625

#### Tabela de conversão entre decimal, binário e hexadecimal

| Decimal | Binário | Hexadecimal |
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 3 | 0011 | 3 |
| 4 | 0100 | 4 |
| 5 | 0101 | 5 |
| 6 | 0110 | 6 |
| 7 | 0111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |

#### Fracções

As fracções, no seu desenvolvimento hexadecimal, não são exactas a menos que o denominador seja potência de 2. Contudo, os períodos não costumam ser muito complicados.
    1/2 = 0,8
    1/3 = 0,55...
    1/4 = 0,4
    1/5 = 0,33...
    1/6 = 0,2AA...
    1/7 = 0,249249...
    1/8 = 0,2
    1/9 = 0,1C1C...
    1/A = 0,199...
    1/B =
    1/C = 0,155...
    1/D =
    1/E = 0,1249249...
    1/F = 0,11...

#### Tabela de multiplicação

| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 |
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 |
| 2 | 2 | 4 | 6 | 8 | A | C | E | 10 | 12 | 14 | 16 | 18 | 1A | 1C | 1E | 20 |
| 3 | 3 | 6 | 9 | C | F | 12 | 15 | 18 | 1B | 1E | 21 | 24 | 27 | 2A | 2D | 30 |
| 4 | 4 | 8 | C | 10 | 14 | 18 | 1C | 20 | 24 | 28 | 2C | 30 | 34 | 38 | 3C | 40 |
| 5 | 5 | A | F | 14 | 19 | 1E | 23 | 28 | 2D | 32 | 37 | 3C | 41 | 46 | 4B | 50 |
| 6 | 6 | C | 12 | 18 | 1E | 24 | 2A | 30 | 36 | 3C | 42 | 48 | 4E | 54 | 5A | 60 |
| 7 | 7 | E | 15 | 1C | 23 | 2A | 31 | 38 | 3F | 46 | 4E | 54 | 5D | 62 | 69 | 70 |
| 8 | 8 | 10 | 18 | 20 | 28 | 30 | 38 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 | 80 |
| 9 | 9 | 12 | 1B | 24 | 2D | 36 | 3F | 48 | 51 | 5A | 63 | 6C | 75 | 7E | 87 | 90 |
| A | A | 14 | 1E | 28 | 32 | 3C | 46 | 50 | 5A | 64 | 6E | 78 | 82 | 8C | 96 | A0 |
| B | B | 16 | 21 | 2C | 37 | 42 | 4E | 58 | 63 | 6E | 79 | 84 | 8F | 9A | A5 | B0 |
| C | C | 18 | 24 | 30 | 3C | 48 | 54 | 60 | 6C | 78 | 84 | 90 | 9C | A8 | B4 | C0 |
| D | D | 1A | 27 | 34 | 41 | 4E | 5D | 68 | 75 | 82 | 8F | 9C | A9 | B6 | C3 | D0 |
| E | E | 1C | 2A | 38 | 46 | 54 | 62 | 70 | 7E | 8C | 9A | A8 | B6 | C4 | D2 | E0 |
| F | F | 1E | 2D | 3C | 4B | 5A | 69 | 78 | 87 | 96 | A5 | B4 | C3 | D2 | E1 | F0 |
| 10 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 | 100 |

#### Busca de números primos

A busca de números primos na base 16 é menos eficiente que em base 10. Um número primo pode acabar em qualquer destas oito cifras: 1, 3, 5, 7, 9, B, D ou F.
A única excepção é o número primo 2.

## Resumo

* Desde que o ser humano necessitou contabilizar os objetos de seu cotidiano e realizar operações sobre os valores obtidos, ele desenvolveu sistemas numéricos diversos. Entre os diversos sistemas desenvolvidos em todas as épocas, o mais proeminente em nossa sociedade moderna é o sistema decimal, ou seja, o sistema formado por digítos entre 0 e 9, contabilizados de 10 em 10, e cuja combinação pode constituir todos os números possíveis. Porém existem outros sistemas numéricos, utilizados para diversos fins.
* Sistema numérico posicional é o nome dado a um sistema onde os números tem a propriedade variar o seu valor dependendo da posição em que ocupa dentro de uma ordem de valores. Como exemplo, podemos considerar o número 101. O número 1 não representa 1, mas sua posição representa 100 e é diferente do último 1 que representa apenas 1 unidade.
* A base de um sistema numérico é a quantidade de algarismos utilizados para sua representação. Em nossa atual sociedade a base mais utilizada é a base 10 (decimal) onde contamos com 10 algarismos para representação numérica - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Porém existem outras bases de numeração como a base 12, base 60, base 2 (binária) e base 16 (hexadecimal).
* O sistema binário é um sistema de numeração posicional em que todas as quantidades se representam utilizando como base o número dois, com o que se dispõe das cifras: zero e um (0 e 1).
* Sistema Octal é um sistema de numeração cuja base é 8, ou seja, utiliza 8 símbolos para a representação de quantidade. No ocidente, estes símbolos são os algarismos arábicos: 0 1 2 3 4 5 6 7

## Bibliografia e referências externas

* Esta página é somente um esboço. Ampliando-a você ajudará a melhorar a Wikiversidade.