Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão GNU Octave

2.1 Sistema de numeração e mudança de base


Usualmente, utilizamos o sistema de numeração decimal para representar números. Esse é um sistema de numeração posicional onde a posição do dígito indica a potência de 10 que o dígito representa.

Exemplo 2.1.1. O número 293 é decomposto como

293 = 2centenas + 9dezenas + 3unidades = 2 102 + 9 101 + 3 100. (2.1)

O sistema de numeração posicional também pode ser usado com outras bases. Vejamos a seguinte definição.

Definição 2.1.1 (Sistema de numeração de base b). Dado um número natural b > 1 e o conjunto de símbolos {±, 0, 1, 2,,b - 1}1, a sequência de símbolos

dndn-1d1d0,d-1d-2b (2.2)

representa o número positivo

dn bn + d n-1 bn-1 + + d 0 b0 + d -1 b-1 + d -2 b-2 + (2.3)

Para representar números negativos usamos o símbolo - a esquerda do numeral2 .

Observação 2.1.1 (b 10). Para sistemas de numeração com base b 10 é usual utilizar as seguintes notações:

  • No sistema de numeração decimal (b = 10), costumamos representar o número sem os parênteses e o subíndice, ou seja,
    ±dndn-1d1d0,d-1d-2 := ±(dndn-1d1d0,d-1d-2)10. (2.4)
  • Se b > 10, usamos as letras A,B,C, para denotar os algarismos: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Exemplo 2.1.2 (Sistema binário). O sistema de numeração em base dois é chamado de binário e os algarismos binários são conhecidos como bits (do inglês binary digits). Um bit pode assumir dois valores distintos: 0 ou 1. Por exemplo:

x = (1001,101)2 = 1 23 + 0 22 + 0 21 + 1 20 + 1 2-1 + 0 2-2 + 1 2-3 = 8 + 0 + 0 + 1 + 0,5 + 0 + 0,125 = 9,625. (2.5)

Ou seja, (1001,101)2 é igual a 9,625 no sistema decimal.

No GNU Octave podemos converter o número (1001,101)2 para a base decimal computando

>> 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 + 1*2^-1 + 0*2^-2 + 1*2^-3  
ans =  9.6250

Exemplo 2.1.3 (Sistema quaternário). No sistema quaternário a base b é igual a 4 e, portanto, temos o seguinte conjunto de algarismos {0, 1, 2, 3}. Por exemplo:

(301,2)4 = 3 42 + 0 41 + 1 40 + 2 4-1 = 49,5. (2.6)

Verifique no computador!

Exemplo 2.1.4 (Sistema octal). No sistema octal a base é b = 8. Por exemplo:

(1357,24)8 = 1 83 + 3 82 + 5 81 + 7 80 + 2 8-1 + 4 8-2 = 512 + 192 + 40 + 7 + 0,25 + 0,0625 = 751,3125. (2.7)

Verifique no computador!

Exemplo 2.1.5 (Sistema hexadecimal). O sistema de numeração cuja a base é b = 16 é chamado de sistema hexadecimal. Neste, temos o conjunto de algarismos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,A,B,C,D,E,F}. Convertendo o número (E2AC)16 para a base 10 temos

(E2AC)16 = 14 163 + 2 162 + 10 161 + 12 160 = 57344 + 512 + 160 + 12 = 58028. (2.8)

Verifique no computador!

Observação 2.1.2. O GNU Octave oferece algumas funções para a conversão de números inteiros em dada base para a base decimal. Por exemplo, temos:

>> bin2dec(’1001’)  
ans =  9  
>> hex2dec(’451’)  
ans =  1105  
>> base2dec(’157’,8) #oct -> dec  
ans =  111  
>> base2dec(’BEBA’,16)  
ans =  48826

Nos exemplos acima vimos como converter números representados em um sistema de numeração de base b para o sistema decimal. Agora, vamos estudar como fazer o processo inverso. Isto é, dado um número decimal (X)10 queremos escrevê-lo em uma outra base b, isto é, queremos obter a seguinte representação:

(X)10 = (dndn-1d0,d-1)b = dn bn + d n-1 bn-1 + + d 0 b0 + d -1 b-1 + d -2 b-2 + (2.9)

Separando as partes inteira e fracionária de X, isto é, X = Xi + Xf, temos

Xi = dn bn + + d n-1bn-1 + d 1 b1 + d 0 b0 (2.10)

e

Xf = d-1 b1 + d-2 b2 + (2.11)

Nosso objetivo é determinar os algarismos {dn,dn-1,...}.

Primeiramente, vejamos como tratar a parte inteira Xi. Calculando sua divisão de Xi por b, temos:

Xi b = d0 b + d1 + d2 b1 + + d n-1 bn-2 + d n bn-1. (2.12)

Observe que d0 é o resto da divisão de Xi por b, pois d1 + d2 b1 + + d n-1 bn-2 + d n bn-1 é inteiro e d0 b é uma fração com d0 < b. Da mesma forma, o resto da divisão de d1 + d2 b1 + + d n-1 bn-2 + d n bn-1 por b é d1. Ou seja, repetindo este processo encontramos os algarismos d0, d1, d2, , dn.

Vamos, agora, converter a parte fracionária Xf do número decimal X para o sistema de base b. Multiplicando Xf por b, temos

bXf = d-1 + d-2 b + d-3 b2 + (2.13)

Observe que a parte inteira desse produto é d-1 e d-2 b + d-3 b2 + é a parte fracionária. Quando multiplicamos d-2 b + d-3 b2 + por b novamente, encontramos d-2. Repetindo este processo encontramos os demais algarismos.

Exemplo 2.1.6. Vamos converter o número 9,625 para a base binária (b = 2). Primeiramente, decompomos 9,625 na soma de suas partes inteira e fracionária.

9,625 = 9 + 0,625. (2.14)

Conversão da parte inteira. Para converter a parte inteira, fazemos sucessivas divisões por b = 2 obtendo 9 = 4 2 + 1 (2.15) = (2 2 + 0) 2 + 1 (2.16) = 23 + 1. (2.17)

Ou seja, temos que 9 = (1001)2. No GNU Octave, podemos usar os comandos fix (truncamento) e mod (resto da divisão) para computar esta conversão da seguinte forma

>> x = 9  
x =  9  
>> d0 = mod(x,2), x = fix(x/2)  
d0 =  1  
x =  4  
>> d1 = mod(x,2), x = fix(x/2)  
d1 = 0  
x =  2  
>> d2 = mod(x,2), x = fix(x/2)  
d2 = 0  
x =  1  
>> d3 = mod(x,2), x = fix(x/2)  
d3 =  1  
x = 0

Conversão da parte fracionária. Para converter a parte fracionária, fazemos sucessivas multiplicações por b = 2 obtendo 0,625 = 1,25 2-1 = 1 2-1 + 0,25 2-1 (2.18) = 1 2-1 + (0,5 2-1) 2-1 = 1 2-1 + 0,5 2-2 (2.19) = 1 2-1 + (1 2-1) 2-2 = 1 2-1 + 1 2-3. (2.20)

Ou seja, temos que 0,625 = (0,101)2. No GNU Octave, podemos computar esta conversão da parte fracionária da seguinte forma

>> x = 0.625  
x =  0.62500  
>> d = fix(2*x), x = 2*x - d  
d =  1  
x =  0.25000  
>> d = fix(2*x), x = 2*x - d  
d = 0  
x =  0.50000  
>> d = fix(2*x), x = 2*x - d  
d =  1  
x = 0

Conclusão. Da conversão das partes inteira e fracionária de 9,625, obtemos 9 = (1001)2 e 0,625 = (0,101)2. Logo, concluímos que 9,625 = (1001,101)2.

Observação 2.1.3. O GNU Octave oferece algumas funções para a conversão de números inteiros em base decimal para uma base dada. Por exemplo, temos:

>> dec2base(9,2)  
ans = 1001  
>> dec2base(111,8)  
ans = 157  
>> dec2base(48826,16)  
ans = BEBA

Observação 2.1.4. Uma maneira de converter um número dado em uma base b1 para uma base b2 é fazer em duas partes: primeiro converter o número dado na base b2 para base decimal e depois converter para a base b1.

Exercícios resolvidos


Esta seção carece de exercícios resolvidos. Clique em e inicie a editá-la agora mesmo. Veja outras formas de participar clicando aqui.

ER 2.1.1. Obtenha a representação do número 125,583 ̄ na base 6.

Solução. Decompomos 125,583 ̄ nas suas partes inteira 125 e fracionária 0,583 ̄. Então, convertemos cada parte.

Conversão da parte inteira. Vamos escrever o número 125 na base 6. Para tanto, fazemos sucessivas divisões por 6 como segue:

125 = 20 6 + 5(125 dividido por 6 é igual a 20 e resta 5) = (3 6 + 2) 6 + 5 = 3 62 + 2 6 + 5, (2.21)

logo 125 = (325)6.

Estes cálculos podem ser feitos no GNU Octave com o auxílio das funções mod e fix. A primeira calcula o resto da divisão entre dois números, enquanto que a segunda retorna a parte inteira de um número dado. No nosso exemplo, temos:

>> x = 125  
x =  125  
>> d = mod(x,6), x = fix(x/6)  
d =  5  
x =  20  
>> d = mod(x,6), x = fix(x/6)  
d =  2  
x =  3  
>> d = mod(x,6), x = fix(x/6)  
d =  3  
x = 0

Verifique!

Conversão da parte fracionária. Para converter 0,583 ̄ para a base 6, fazemos sucessivas multiplicações por 6 como segue:

0,583¯ = 3,5 6-1(0,583¯ multiplicado por 6 é igual a 3,5) = 3 6-1 + 0,5 6-1 = 3 6-1 + (3 6-1) 6-1 = 3 6-1 + 3 6-2, (2.22)

logo 0,583¯ = (0,33)6. No GNU Octave, podemos computar esta conversão da parte fracionária da seguinte forma

>> x = 0.58 + 1/3/100  
x =  0.58333  
>> d = fix(6*x), x = 6*x - d  
d =  3  
x =  0.50000  
>> x = 0.5 #isso é realmente necessário?  
x =  0.50000  
>> d = fix(6*x), x = 6*x - d  
d =  3  
x = 0

ER 2.1.2. Obtenha a representação na base 4 do número (101,01)2.

Solução. Começamos convertendo (101,01)2 para a base decimal:
(1001,101)2 = 1 22 + 1 20 + 1 2-2 = 5,25. (2.23)

Então, convertemos 5,25 para a base 4. Para sua parte inteira, temos

5 = 1 4 + 1 = (11)4. (2.24)

Para sua parte fracionária, temos

0,25 = 1 4-1 = (0,1) 4. (2.25)

Logo, (101,01)2 = (11,1)4. Verifique estas contas no computador!

Exercícios


E 2.1.1. Converta para base decimal cada um dos seguintes números:

a)
(100)2
b)
(100)3
c)
(100)b
d)
(12)5
e)
(AA)16
f)
(7,1)8
g)
(3,12)5

Resposta. a) 4; b) 9; c) b2; d) 7; e) 170; f) 7,125; g) 3,28

E 2.1.2. Escreva os números abaixo na base decimal.

a)
(25,13)8
b)
(101,1)2
c)
(12F,4)16
d)
(11,2)3

Resposta. a) 21,172; b) 5,5; c) 303,25; d) 4,6 ̄.

E 2.1.3. Escreva o número 5,5 em base binária.

Resposta. (101,1)2.

E 2.1.4. Escreva o número 17,109375 em base hexadecimal (b = 16).

Resposta. (11,1C)16.

E 2.1.5. Escreva cada número decimal na base b.

a)
7,6¯ na base b = 5
b)
29,16¯ na base b = 6

Resposta. a) (12,31 ̄)5; b) (45,1)6.

E 2.1.6. Escreva (12.4)8 em base decimal e binária.

Resposta. 10,5; (1010,1)2.

E 2.1.7. Escreva cada número dado para a base b.

a)
(45,1)8 para a base b = 2
b)
(21,2)8 para a base b = 16
c)
(1001,101)2 para a base b = 8
d)
(1001,101)2 para a base b = 16

Resposta. a) (100101,001)2; b) (11,4)16; c) (11,5)8; d) (9,A)16.

E 2.1.8. Quantos algarismos são necessários para representar o número 937163832173947 em base binária? E em base 7? Dica: Qual é o menor e o maior inteiro que pode ser escrito em dada base com N algarismos?

Resposta. 50; 18.

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 30/7/2018 às 13:16:35.

Informe erros ou edite você mesmo!