Do que se trata o conteúdo? Trata‑se do estudo dos sistemas de numeração utilizados em computação, dos processos de conversão entre bases diferentes e da representação binária de números inteiros, incluindo técnicas para representar valores negativos.
Principais assuntos (exemplos)
Ponto de maior atenção A correta interpretação dos números negativos (excesso vs complemento de 2) e o tratamento das partes fracionárias nas conversões de bases.
Conclusão Dominar sistemas de numeração e suas conversões é essencial para a programação e arquitetura de computadores; a escolha da representação (excesso ou complemento de 2) influencia diretamente nas operações aritméticas e na interpretação dos dados.
1 Sistemas de Numeração
Conjunto de símbolos que permitem representar quantidades. Cada sistema possui uma base (radix) que indica quantos símbolos diferentes são usados.
1.1 Base Decimal (10)
Utiliza os símbolos 0‑9. Cada posição representa potências de 10. Ex.: 237 = 2·10² + 3·10¹ + 7·10⁰.
1.2 Base Binária (2)
Usa apenas 0 e 1. Cada posição vale 2ⁿ. Ex.: 1011₂ = 1·2³ + 0·2² + 1·2¹ + 1·2⁰ = 11₁₀.
1.3 Base Octal (8)
Símbolos de 0 a 7. Cada posição vale 8ⁿ. Ex.: 17₈ = 1·8¹ + 7·8⁰ = 15₁₀.
1.4 Base Hexadecimal (16)
Símbolos 0‑9 e A‑F (10‑15). Cada posição vale 16ⁿ. Ex.: 2F₁₆ = 2·16¹ + 15·16⁰ = 47₁₀.
2 Conversão de Bases
Procedimentos para mudar a representação de um número de uma base para outra.
2.1 Base X → Decimal
Multiplica‑se cada dígito pelo valor da base elevado à posição (contando da direita, posição 0). Inclui‑se potências negativas para frações.
Exemplo: 230,4₈ → 2·8² + 3·8¹ + 0·8⁰ + 4·8⁻¹ = 128 + 24 + 0 + 0,5 = 152,5₁₀.
2.2 Decimal → Base X (parte inteira)
Divide‑se sucessivamente o número inteiro pela base, anotando os restos. Os restos são lidos de baixo para cima.
Exemplo: 45₁₀ → ÷2 → restos 1,0,1,1,0,1 → 101101₂.
2.3 Decimal → Base X (parte fracionária)
Multiplica‑se a fração pela base; o algarismo inteiro resultante é o próximo dígito. Repete‑se com a nova fração.
Exemplo: 0,75₁₀ × 2 = 1,5 → dígito 1; 0,5 × 2 = 1,0 → dígito 1 → 0,11₂.
3 Representação Binária de Inteiros
Em computadores, os inteiros são armazenados em um número fixo de bits (n). Um dos bits indica o sinal.
3.1 Bit de Sinal
0 = positivo, 1 = negativo. Os n‑1 bits restantes armazenam o valor absoluto ou codificado.
3.2 Notação de Excesso (bias)
Adiciona‑se um valor fixo (bias) ao número real antes de codificá‑lo. Ex.: para 8 bits, bias = 2⁷⁻¹ = 127. –5 → –5 + 127 = 122 → 01111010₂.
3.3 Complemento de 2
Para números negativos, inverte‑se todos os bits do valor positivo e soma‑se 1. Ex.: –5 em 8 bits → 5 = 00000101 → inverso 11111010 → +1 → 11111011₂.
3.4 Exemplo completo
Representar –5 em 8 bits usando complemento de 2:
Resultado: 11111011₂.
Resposta correta: B) 0xFF
255₁₀ em hexadecimal é FF₁₆.
Resposta correta: A) 0,1101₂
0,1101₂ = 1·2⁻¹ + 1·2⁻² + 0·2⁻³ + 1·2⁻⁴ = 0,5 + 0,25 + 0 + 0,0625 = 0,8125₁₀.
Resposta correta: A) -128 a 127
Em 8 bits usando complemento de 2, o intervalo é –2⁷ ≤ n ≤ 2⁷‑1, ou seja, –128 a 127.
Resposta correta: B) 10000000₂
Em notação de excesso‑127 (bias = 127) para 8 bits, o padrão “10000000” representa o valor decimal 0, pois 0 + 127 = 127 → 127 codificado = 10000000₂.
Olá, alunas e alunos do curso de Improdução a Conceitos de Computação.
Na aula de na visual da hoje, vamos ver sistemas de numeração e conversão de bases partindo.
Vou iniciar falando dos sistemas de numeração em computação, depois da conversão entre bases, esse sistema e, por último, vou retomar a parte de conventificação de na área, só que agora falando de números.
Eu lembro que na aula anterior nós vimos a codificação de na área aplicada para textos, imagens e sols.
Bom, a representação estruturada e dentro de um contexto, de uma coleção de números através de numerais, é o papel de um sistema de numeração.
Nesse contexto nós temos aqui que a representação, por exemplo, para o número 10, no sistema chinês, é esse preso e parece sim bloquido, no romano, esse aqui e no egípcio, outro simbulo.
Vamos abaixo ali.
Na computação, nós temos uso de diferentes sistemas, nós temos o binário, que é empregado, por exemplo, quando você converte o código que está numa linguagem de programação para uma representação que vai ser processada pela máquina, nesse caso, uma representação binária, você tem a base que era muito utilizada, mas agora está sendo substituída pela éxadecimal, mas que é um sistema que ainda existe em sistemas operacionais como Linux, Android, Mac, para, por exemplo, pernissão de arquivos e dessa maneira eles mantém essa representação, para não ter que adicionar funcionalidades para a éxadecimal.
Nesse contexto a éxadecimal é a que está sendo utilizada, é um tipo de representação que tem sido utilizada, agora para a acesso de memória, para você representar um erro na tela do computador, para você definir cores em páginas o erro que devem e entre outros usos.
Tá, mas o que seria a base? A base 10 conhecida de todos, nós temos os elementos, os símbolos que iriam de 0 até 9, e a partir daí você faz composições com esses números, 1, 0 para 10, 1, 1 para 11, assim sucessivamente.
A base 8, mas vamos ter o erro do 0, ao 7.
A partir daí começamos a repetir as composições nesse caso, o 8 na base 10, para ser representado como 1, 0 na base 8, o 9 para ser representado como 1, 1 na base 8, na base éxadecimal, nós temos então um conjunto de representação que vai dizer até 9, e está entendendo a octal até 9, e além disso, incluindo os símbolos ADCDEF, para representar os 15 valores dessa base, os 15 algoritmos dessa base.
Bom, no caso da base binária, temos apenas dois símbolos básicos, 0 e 1, e a partir daí fazemos todas as combinações.
Bom, nesse contexto, precisamos então entender o processo de conversão de bases.
Agora nós vamos ver o processo de conversão, por exemplo, de uma base x para decimal.
Então, vou apresentar essa fórmula de acordo com esse exemplo.
Não por exemplo, cada um desses coeficientes são representados por esses valores considerando uma base binária, e aí o que vai acontecer? No momento de se fazer a conversão, eu vou pegar o primeiro elemento da direita para a esquerda, pelo menos eu costumo pensar melhor assim, então eu teria 0, 1, 2, 3, então eu teria essa base aqui representada por x elevada a 0, 1, 2, 3, sendo multiplicada pelo coeficientes nessa posição.
Os coeficientes aqui, nesse caso estamos considerando coeficientes que aparecem valores que aparecem, e algoritmos que aparecem antes da vírgula.
Então, nesse caso temos 1, 0, 1, e 1, fazendo as contas chegamos que essa representação binária na base decimal é um número bom, agora vamos pensar em 230,4 na base 8 e passar para a base decimal, nesse caso que vai acontecer, a mesma coisa, só que eu tenho uma posição depois da vírgula, então novamente 0, 1, 2, então eu tenho 8 elevada 0 multiplicado por 0, 8 elevado a 1 multiplicado por 3, 8 elevado ao quadrado, multiplicado por 2, e agora eu trago também o caso a coisa vírgula, nesse caso 4 vezes 8 elevado a menos 1, que vem depois da vírgula, nós representamos, contando agora num rende dos valores negativos, então você faça 0, menos 1, menos 2, menos m, sim m, for precisando desejada, e aí temos a representação, bom, nesse caso temos a situação inversa que é estando na base decimal, quero passar para a base x, bom, para isso então vamos fazer o seguinte entendimento, eu vou ser um número que tem uma parte inteira, uma parte fracionária, é uma parte que vem antes da vírgula, uma parte depois da vírgula, para a parte inteira eu vou pegar o valor e dividir sucessivamente pelo valor dessa base, x, eu exemplificando aqui para o caso de conversão para uma base binária, eu vou dividir por 2, eu vou fazer divisões por 2, que observe, claro, o resto vai dar 1 ou 0, eu vou fazendo essa sequência de divisões até uma hora que eu vou ter aqui, o resto, mas eu também vou dividir esse valor por 2 até obter 0 aqui, dessa forma a sequência de valores que aparece aqui será a sequência binária, só que eu conto o último resto para o primeiro resto obtido, bom, e no caso da parte fracionária, então nesse caso eu pego o valor e multiplico pela base que eu quero converter, multiplico, nesse caso eu vou ter 0,6 e eu conto o número que aparece antes da vírgula, eu observe que o número que vai aparecer antes da vírgula é 0,1, e aí eu pego 0,6, bom, vou pegar o próprio 0,6, vou explicar por 2, 1,2, nesse caso vou pegar o 0,2 e vou explicar por 2, 0,4, ou seja, eu sempre pego a parte fracionária que vem depois da vírgula, 0,4 multiplico por 2, 0,8, e assim sucessivamente pegando agora do primeiro até o último valor, dependendo da precisão que eu quero utilizar, os elementos que aparecem antes da vírgula, então vou exemplificar agora considerando que eu estou na base desse mal, que quero passar para a base hexadecimal esse número 1,515,53, o que eu vou fazer? Começando pela parte inteira, devido por 16 até o momento em que eu vou ter o consciente 0, pego o resto obtido, e desse resto até o primeiro eu vou ter a representação inteira desse valor, agora vou para a parte fracionária, certo? Para a parte fracionária é o que eu faço, vou pegar o 0,53 multiplicador 16, oito vírgula 48, pego 0,48 multiplico por 16, 7,68, pego 0,68 sempre, na parte fracionária, multiplico por 16, 10,088, então observe que nesse caso nós obtivemos 8,7 e 10, que na hexadecimal é representado pelo letra A, então eu vou ter 8,7A, juntando com a parte inteira anterior temos que a conversão fica 4bF,87A na base hexadecimal, na que temos a parte fracionária em destaque, com isso nós retomamos o assunto da codificação binária considerando agora números, especificamente números inteiros, então representando um valor inteiro na base decimal com um número binário de tamanho 1e, o que acontece nesse caso? Se eu defino um tamanho para mim a sequência de bits, isso significa que eu estou limitando o intervalo de valores inteiros que eu consigo gerar, e os valores inteiros se dividem em parte negativa, o 0 e parte positiva, bom, eu tenho então que nesse total de n bits que eu dispõe para representar o valor, eu tenho que separar um bit para indicar se o valor é positivo ou negativo, então por exemplo eu posso dizer que se um bit destes n em determinada posição tiver o valor 1, ele vai ser positivo, se ele tiver o valor 0 ele vai ser negativo, beleza, ai sobram n-ubits para eu representar efetivamente o valor, bom nesse caso o valor é absoluto, nesse caso eu vou ter 2 elevado n-1 para valores negativos e 2 elevado n-1 menos 1, porque eu já vou estar usando 1 para representar o 0 para os valores positivos, bom, dá dessa noção, nós temos duas alternativas para a codificação binária de valores inteiros negativos que eu vou estar apresentando aqui, a notação de excesso e a notação de complemento de 2, bom, o valor do primeiro bit, então se eu defino uma cadeia de tamanho n, o valor do primeiro bit em andas as notações, vão representar o sinal do número, lembra que eu falei que a gente teria que escolher de sisn, um bit para aguardar se a sinal positivo é negativo, então nesse caso nessas notações o primeiro bit é o que vai ser utilizado para representar o sinal do número, na notação de excesso o bit de sinal igual a 1 vai ser utilizado para valores positivos e o bit de sinal igual a 0 para valores negativos, então aqui temos um exemplo da notação de excesso, então se eu considerar uma cadeia com 4 elementos, se a gente fizer aquelas contas que estavam aqui nesses slides, a gente vai ver que a gente vai conseguir representar 2 elevado n-1, 2 elevado a 3, 8 valores negativos, então o que vai acontecer nesse caso, temos aqui os 8 valores negativos, 7 valores positivos, 2 elevado a 3 menos 1, bom, na notação de excesso nós começamos a seguir de forma, sendo 0 para valores negativos, o primeiro valor negativo do meu intervalo, o meu menor valor negativo seria menos 8, então é o 0-0-0, aumentando mais 1 em binário, somando mais 1 em binário, eu vou ter o meu 7, somando mais 1 em binário, eu vou ter o meu 6, somando mais 1, o menos 5, e assim sucessivamente, observe nesse caso que nós vamos chegar no ponto em que os valores, eles vão estar esgotando todas as representações possíveis, para as 3 posições que representam o valor absoluto do número, mantendo 0 na primeira posição para indicar que são valores negativos, então o meu último representação é o 0-1-1, bom, feito isso, eu vou ter, para a primeira posição, o valor 1 indicando valores positivos, e aí o mesmo raciocivo, 0-0-0, vai ser o 0, somando mais 1, 1, mais 1, 2, mais 1, 3, e assim sucessivamente, na notação de complemento de 2, o que vai acontecer é que os bites de sinal igual a 0 vão ser utilizados para valores positivos, e o biti de sinal igual a 1 para valores negativos, eu mesmo já mejam raciocílim, então nesse caso o meu 0 é efetivamente 0-0-0-0, 1, esses 0-0-0-1, e assim sucessivamente, até o passar o terá agora ficção 1 na primeira o biti, 0-0-0-8, menos 7, mais 1 menos 6, mais 1 menos 5, e assim sucessivamente, no caso da notação de complemento de 2, se eu quiser representar um número, por exemplo, menos 5, eu faço a representação dele positiva 5, porque nesse caso seria 0 para positivo 1-0-1, o valor do 5 em binário, e aí eu inverto cada biti 0-1-0, após a inerção eu somendo 1, eu tenho exatamente a representação negativa do menos 5, certo? Bom, dessa forma nós encerramos hoje a parte de sistema de inuberação e conversão de base, a parte 1, eu espero que vocês tenham entendido o conceito, e vamos continuar nesse assunto na próxima vídeo-al.