| | | | |

1.1 Sistema de Numeração Posicional

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

Cotidianamente, usamos o sistema de numeração posicional na base decimal. Por exemplo, temos

123.5=1×102+2×101+3×100+5×101, (1.1)

onde o algarismo/dígito 1 está na posição 2 (posição das centenas), o dígito 2 está na posição 1 (posição das dezenas) e o dígito 3 está na posição 0 (posição das unidades). Mais geralmente, temos a representação decimal

±dnd2d1d0,d1d2d3 (1.2)
:=±(dn×10n++d2×102+d1×101+d0×100 (1.3)
+d1×101+d2×102+d3×103+), (1.4)

cujos os dígitos di{0,1,2,3,4,5,6,7,8,9}, i=n,,2,1,0,1,2,3,. Observamos que esta representação posicional pode ser generalizada para outras bases numéricas.

Definição 1.1.1.

(Representação posicional) Dada uma base b{0}, definimos a representação

±(dnd2d1d0,d1d2d3)b (1.5)
:=±(dn×bn++d2×b2+d1×b1+d0×b0 (1.6)
+d1×b1+d2×b2+d3×b3+), (1.7)

onde os dígitos di{0,1,,b1}11endnote: 1Para bases b11, usamos a representação dos dígitos maiores ou iguais a 10 por letras maiúsculas do alfabeto latino, i.e. A=10, B=11, C=12 e assim por diante., i=n,,2,1,0,1,2,3,.

Exemplo 1.1.1.

(Representação binária) O número (11010.101)2 está escrito na representação binária (base b=2). Da Definição 1.1.1, temos

(1413021100.  11  02  13)2 (1.8)
=1×24+1×23+0×22+1×21+0×20 (1.9)
+1×21+0×22+1×23 (1.10)
=26.625. (1.11)
11*2**4 + 1*2**3 + 0*2**2 + 1*2**1 + 0*2**0 +
21*2**-1 + 0*2**-2 + 1*2**-3
  26.625

1.1.1 Mudança de Base

Um mesmo número pode ser representado em diferentes bases. A mudança de base da representação de um dado número pode ser feita de várias formas. De forma geral, se temos um número x representado na base b1 e queremos obter sua representação na base b2, fazemos

  1. 1.

    Calculamos a representação do número x na base decimal.

  2. 2.

    Da calculada representação decimal, calculamos a representação de x na base b2.

Observamos que o passo 1. (b10) segue imediatamente da Definição 1.1.1. Agora, o passo 2. (10b), podemos usar o seguinte procedimento. Suponhamos que x tenha a seguinte representação decimal

dndn1dn2d0,d1d2d3 (1.12)

Então, separamos sua parte inteira I=dndn1dn2d0 e sua parte fracionária F=0,d1d2d3 (x=I+F). Então, usando de sucessivas divisões de I pela base b desejada, obtemos sua representação nesta mesma base. Analogamente, usando de sucessivas multiplicações de F pela base b, obtemos sua representação nesta base. Por fim, basta somar as representações calculadas.

Exemplo 1.1.2.

Obtenha a representação em base quartenária (b=4) do número (11010.101)2.

  1. 1.

    b=210. A representação de (11010.101)2 segue direto da Definição 1.1.1 (veja, o Exemplo 1.1.1). Ou seja, temos

    (1413021100.  11  02  13)2 (1.13)
    =24+23+21+21+23 (1.14)
    =26.625. (1.15)
    12**4 + 2**3 + 2 + 2**-1 + 2**-3
    26.625
    
  2. 2.

    b=104. Primeiramente, decompomos 26.625 em sua parte inteira I=26 e em sua parte fracionária 0.625. Então, ao fazermos sucessivas divisões de I por b=4, obtemos:

    I =26 (1.16)
    =6×4+2×40 (1.17)
    =(1×4+2)×4+2×40 (1.18)
    =1×42+2×4+2×40 (1.19)
    =(122)4. (1.20)
    1I = int(26.625)
    2d_int = []
    3while (I != 0):
    4  d_int.insert(0, I % 4)
    5  I //= 4
    6print('(',*d_int,')_4',sep="")

    Agora, para a parte fracionária, usamos sucessivas multiplicações de F por b=4, obtendo:

    F =0.625 (1.21)
    =2.5×41=2×41+0.5×41 (1.22)
    =2×41+2×41×41 (1.23)
    =2×41+2×42 (1.24)
    =(0.22)4. (1.25)
    1F = 26.625 % 1
    2d_fra = []
    3while (F != 0):
    4  F *= 4
    5  d_fra.append(int(F))
    6  F %= 1
    7print('(0,',*d_fra,')_4',sep="")

Por fim, dos passos 1. e 2., temos (11010.101)2=(122.22)4.

1print('(',*d_int,',',*d_fra,')_4', sep='')
(122.22)_4

1.1.2 Exercícios Resolvidos

ER 1.1.1.

Forneça a representação decimal dos seguintes números:

  1. a)

    (10101)2

  2. b)

    (0.4321)5

  3. c)

    (23.5)8

  4. d)

    (A2A)11

  5. e)

    (BEBE)16

Solução.
  1. a)

    (1403120110)2

    10b10101
    21
    
  2. b)

    (00,  41  32  23  14)5

    14*5**-1+3*5**-2+2*5**-3+5**-4
    0.9376000000000001
    
  3. c)

    (2130,  51)8

    10o235 / 8**1
    19.625
    
  4. d)

    (A221A0)11

    1int('A2A', 11)
    1242
    
  5. e)

    (B3E2B1E0)16

    10xBEBE
    48830
    
ER 1.1.2.

Forneça a representação na base indicada dos seguintes números decimais:

  1. a)

    203 base 2

  2. b)

    0.671875 base 2

  3. c)

    17.25 base 8

  4. d)

    3245.875 base 16

Solução.
  1. a)

    203 base 2 Usando o método Python bin, obtemos

    1bin(203)
    ’0b11001011’
    

    ou seja, 203=(11001011)2.

  2. b)

    0.671875 base 2.

    Executando o código

    1F = 0.671875
    2digs = []
    3while (F != 0):
    4  F *= 2
    5  digs.append(int(F))
    6  F %= 1
    7print('(0,',*digs,')_2',sep="")

    obtemos que 0.671875=(0.101011)2.

  3. c)

    17.25 base 8

    Temos que

    17.25 =17+0.25 (1.26)
    =16+1+28 (1.27)
    =281+180+281 (1.28)
    =(21.2)8 (1.29)
  4. d)

    3245.875 base 16

    Executando o seguinte código

    1# base
    2b = 16
    3# dígitos
    4digs = "0123456789ABCDEF"
    5
    6# número
    7x = 3245.875
    8
    9# parte inteira
    10I = int(x)
    11di = []
    12while (I != 0):
    13  di.insert(0, I % b)
    14  I //= b
    15
    16# parte fracionária
    17F = x % 1
    18df = []
    19while (F != 0):
    20  F *= b
    21  df.append(int(F))
    22  F %= 1
    23
    24print('(',*[digs[d] for d in di],\
    25      ',',*[digs[d] for d in df],f')_{b}',sep="")

    obtemos 3245.875=(CAD,E)16.

ER 1.1.3.

Na base indicada, forneça a representação dos seguintes números:

  1. a)

    (1101)2 base 8

  2. b)

    (1011.0101)2 base 8

Solução.
  1. a)

    (1101)2 base 8

    1oct(0b1101)
    ’0o15’
    

    Ou seja, (1101)2=(15)8.

  2. b)

    (1011.0101)2 base 8

    Primeiro, convertemos (1011.0101)2 para decimal (base 10).

    10b10110101 / 2**4
    11.3125
    

    Logo, convertemos para a base octal (base 8) com o seguinte código:

    1# base
    2b = 8
    3
    4# número
    5x = 11.3125
    6
    7# parte inteira
    8I = int(x)
    9di = []
    10while (I != 0):
    11  di.insert(0, I % b)
    12  I //= b
    13
    14# parte fracionária
    15F = x % 1
    16df = []
    17while (F != 0):
    18  F *= b
    19  df.append(int(F))
    20  F %= 1
    21
    22print('(',*di,',',*df,f')_{b}',sep="")

    Com este último, obtemos (1011.0101)2=11.3125=(13.24)8

1.1.3 Exercícios

E. 1.1.1.

Obtenha a representação decimal dos seguinte números:

  1. a)

    (101101.00101)2

  2. b)

    (23.1)4

  3. c)

    (DAAD)16

  4. d)

    (33.11)8

  5. e)

    (51)6

Resposta.

a) 45.15625; b) 11.25; c) 55981; d) 27.140625; e) 31

E. 1.1.2.

Obtenha a representação dos seguintes números decimais na base indicada:

  1. a)

    10 na base 2.

  2. b)

    45.5 na base 2.

  3. c)

    41 na base octal.

  4. d)

    66.31640625 na base hexadecimal.

  5. e)

    0,3¯ na base 3.

Resposta.

a) (1010)2; b) (101101.1)2; c) (51)8; d) (42.51)16; e) (0.1)3

E. 1.1.3.

Obtenha a representação dos seguintes números na base indicada:

  1. a)

    (101101.00101)2 na base 4.

  2. b)

    (23.1)4 na base 2.

  3. c)

    (2001)16 na base 8.

Resposta.

a) (231.022)4; b) (1011.01)2; c) (20001)8

E. 1.1.4.

Obtenha a representação dos seguintes números na base indicada:

  1. a)

    (0.1)3 na base decimal.

  2. b)

    (0,1¯)3 na base decimal.

  3. c)

    0,3¯ na base octal.

Resposta.

a) 0,3¯; b) 1.5; c) (0,25¯)8;

E. 1.1.5.

Obtenha a representação dos seguintes números na base indicada:

  1. a)

    0.3 na base 4.

  2. b)

    0.3 na base 9.

  3. c)

    (A8)16 na base 5.

Resposta.

a) (0.103¯)4; b) (0,27¯); c) (2.2)5


Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!