Prévia do material em texto
T3 - M1/M2/M3/M4 1 🗒 T3 - M1/M2/M3/M4 🗓 19/05/23 T3 - Representação de Dados Introdução É muito importante dominar conceitos fundamentais que determinam qualquer área de conhecimento. Um dos conceitos importantes é o "bit". O computador é uma máquina eletrônica e o bit é a unidade básica de informação utilizada nele. Ele T3 - Representação de Dados Introdução 🎬 Introdução M1 - Sistemas de Computação 🎬 Unidades de Informação De bit para byte De byte para bit Múltiplos e submúltiplos 🎬 Representação das Informações no Computador 🎬 Representação de dados e conversão de unidades de medida Exercicios M2 - Sistemas de Numeração e Operações Aritméticas 🎬 Sistemas de Numeração Bases de Numeração Sistema posicional Sistema Não Posicional 🎬 Operações aritméticas com números inteiros em qualquer base Adição Subtração Computação útil 🎬 Sistemas de numeração posicionais e não posicionais e operações aritméticas com números inteiros Exercícios M3 - Conversão Conversão entre sistemas de numeração Tabela de conversão de bases De uma base X para outra Y 🎬 Conversão entre sistema de numeração de uma base b para base 10 🎬 Conversão entre sistema de numeração de uma base 10 para base b Casos Especiais Bases 2 e 8 Bases 2 e 16 Bases 8 e 16 Lógica Booleana 🎬 Conversão de valores entre bases numéricas distintas M4 - Representação de Dados Tabelas de Representação de Dados 🎬 Tabela de representação de dados ASCII Unicode 🎬 Tabela de representação de dados UNICODE Evolução dos caracteres 🎬 Códigos ASCII e Unicode Considerações Finais Referências T3 - M1/M2/M3/M4 2 representa sinais elétricos e é fundamental para criar e processar informações. Também é importante conhecer os sistemas de numeração. Eles são usados para formar números em diferentes bases numéricas, que são as quantidades de símbolos disponíveis para representação. Vamos focar em quatro bases: decimal (usada no nosso dia a dia), binária (usada pelo computador), octal e hexadecimal. Vamos aprender como converter valores entre diferentes bases numéricas e realizar operações de adição e subtração nessas bases. Isso é essencial para entender como alternar entre os sistemas de numeração que usamos normalmente, como o decimal, e os sistemas binário, octal e hexadecimal usados pelo computador. Os bits são a forma básica de representação de dados em um computador. Eles seguem padrões de representação para que o computador possa utilizar valores numéricos para representar os sinais do hardware. Porém, estamos acostumados a representar dados usando letras, palavras, frases, etc. Então, vamos ver como conjuntos de bits são representados como caracteres e também iremos apresentar tabelas de representação de dados. 🎬 Introdução Vamos falar um pouco sobre representação de dados. No seu computador, você está assistindo a um vídeo onde estou falando e você está ouvindo minha voz e vendo minha imagem. Isso é possível porque a informação que estou gerando aqui no estúdio, através da iluminação, da câmera e do áudio, está sendo representada na memória do computador. Essa informação é captada por sensores e traduzida em impulsos elétricos, que são armazenados no disco. A partir daí, você pode ver o conteúdo que foi gravado na data de hoje. O desafio é como representar esses dados na memória do computador, que é uma máquina eletrônica capaz de armazenar apenas duas grandezas elétricas: zero volts e vcc (a tensão de alimentação fornecida para o computador). Essas grandezas são mapeadas em dois dígitos: zero e um. Toda informação, como voz, vídeo, fotografia, números, precisa ser codificada para que o computador possa manipulá-la, pois ele só reconhece zero e um. O elemento de memória só pode armazenar zero volts ou vcc. Representar a informação de forma conveniente é fundamental na computação. No estudo da representação de dados básicos, vamos abordar números inteiros, incluindo o sinal positivo e negativo, e texto em diferentes idiomas. É importante entender como o computador realiza cálculos com números positivos e negativos, além de saber converter números da base 10 para a base 2 (binária) usada pelo computador. Aprender esses conceitos básicos é como um mecânico aprendendo a usar as ferramentas em sua caixa de ferramentas. Não adianta ter as ferramentas se não sabe como usá-las. Ao aprender esses conceitos, você estará capacitado para aplicar as ferramentas corretamente no momento certo. Isso é o que vocês estão aprendendo agora, a representação da informação. M1 - Sistemas de Computação 🎬 Unidades de Informação Vamos falar um pouco sobre as unidades de informação usadas pelo computador. A unidade fundamental é o bit, que é representado no sistema binário como zero ou um. Um grupo de bits forma um byte, que é composto por 8 bits. É importante entender a relação entre bits e bytes. Para isso, lembre-se de que 8 bits é igual a 1 byte e 1 byte é igual a 8 bits. Você pode usar essa relação para fazer conversões. Por exemplo, se você tem 512 bits e quer saber quantos bytes são, basta dividir 512 por 8. Isso resultará em 64 bytes. Geralmente, representamos byte com "B" maiúsculo e bit com "b" minúsculo. Uma maneira rápida de fazer essas conversões de cabeça é dividir por oito para passar de bit para byte e multiplicar por oito para passar de byte para bit. Essas são as unidades de informação usadas pelo computador. Vamos comparar como ocorre a comunicação entre computador e ser humano. Nós, seres humanos, costumamos criar textos com frases que são compostas por palavras formadas por letras. Da mesma forma, um computador precisa usar símbolos para processar corretamente os dados, de acordo com o que os projetistas e usuários esperam. Vamos mostrar como as unidades de informação são fundamentais nesse processo. O computador armazena e manipula dados eletronicamente usando voltagem ou corrente elétrica. A representação desses valores elétricos é feita de forma binária, usando apenas dois valores: 0 e 1. Quando agrupamos 8 desses bits em uma sequência ordenada, temos uma unidade de medida chamada byte. T3 - M1/M2/M3/M4 3 Na imagem a seguir, você pode ver várias sequências de 8 bits que formam um byte. Essas sequências são compreendidas pelo computador e decodificadas para gerar caracteres legíveis. Por isso, a menor unidade de informação possível em um sistema de computação é o bit. Vamos entender como é feita a conversão entre bit e byte? Sabemos que 8 bits = 1 byte. Então, como convertemos 512 bits em byte? Fazendo uma regra de três simples: Desse modo, a regra geral para a conversão é: De bit para byte Dividimos o valor por 8. De byte para bit Multiplicamos o valor por 8. Apontaremos, a seguir, quatro conjuntos formados nas unidades de informação: Um conjunto ordenado de bytes, que representa uma informação útil para os computadores, constitui uma palavra. Palavra: Um conjunto ordenado de bytes forma uma palavra. Para os computadores, uma palavra é uma informação útil. Pense nela como uma sequência de bytes que representa um valor ou um dado específico que o computador pode processar. Por exemplo, uma palavra pode ser um número, um texto ou qualquer outra informação que o computador precise armazenar ou manipular. Um conjunto estruturado de palavras forma um registro. Registro: Um conjunto estruturado de palavras forma um registro. Nesse caso, estamos organizando diferentes palavras em um formato específico, geralmente com um propósito ou estrutura definida. Um registro pode ser usado para representar um objeto ou uma entidade, onde cada palavra dentro do registro corresponde a um atributo ou característica desse objeto. Por exemplo, em um registro de informações de um aluno, podemos ter palavras que representam o nome, a idade, o endereço, entre outros dados relacionados a esse aluno. Um conjunto organizado de registros forma um arquivo. Arquivo: Um conjunto organizado de registros forma um arquivo. Aqui, estamos agrupando registros relacionados em uma coleção organizada.Um arquivo pode conter diferentes registros que compartilham um tema ou pertencem a um mesmo tipo de informação. Por exemplo, um arquivo de funcionários de uma empresa pode conter vários registros, onde cada registro representa as informações de um funcionário específico. Um conjunto organizado de arquivos forma um banco de dados. Banco de dados: Um conjunto organizado de arquivos forma um banco de dados. Nessa etapa, estamos reunindo diversos arquivos em uma estrutura mais ampla e abrangente. Um banco de dados é usado para armazenar grandes quantidades de 8bits——1byte 512bits——x x = 512/8 = 64bytes T3 - M1/M2/M3/M4 4 informações de forma organizada e inter-relacionada. Ele permite que múltiplos arquivos e registros sejam gerenciados e consultados de maneira eficiente. Os bancos de dados são amplamente utilizados para armazenar informações em sistemas como sistemas de gestão empresarial, sistemas de gerenciamento de clientes, entre outros. Esses conjuntos hierárquicos de unidades de informação - palavras, registros, arquivos e bancos de dados - são fundamentais para a organização e manipulação de dados em computadores. Cada nível oferece uma estrutura e um contexto específico para armazenar e acessar informações de forma eficiente e organizada. Múltiplos e submúltiplos Vamos explicar sobre o uso de múltiplos e submúltiplos para representar grandezas em sistemas de unidades. Assim como fazemos no nosso dia a dia, podemos usar prefixos para expressar valores de grandeza maiores ou menores que uma unidade. Vamos usar como exemplo da grandeza comprimento. No Sistema Internacional de Medidas, a unidade de base para comprimento é o metro. Por exemplo, a distância entre Rio de Janeiro e São Paulo na Via Dutra é de aproximadamente 434.000 metros. Podemos abreviar esse valor usando o prefixo "quilo", que é um múltiplo do metro por um fator de 10³ (1.000). Portanto, dizemos que 434 km (quilômetros) é igual a 434 x 1.000 = 434.000 metros. Da mesma forma, podemos usar prefixos de múltiplos e submúltiplos para representar unidades de informação, como o bit e o byte. Em geral, usamos "b" minúsculo para representar bits e "B" maiúsculo para representar bytes. Por exemplo: 4.000 Kb (4.000 x 10³ = 4.000.000 bits) 567 MB (567 x 10⁶ = 567.000.000 bytes) É importante destacar que essa representação com base decimal, que possui 10 números (de 0 a 9), já que a utilizamos normalmente no nosso dia a dia. Entretanto, seus resultados expressam valores aproximados e não exatos quando se trata da quantidade de bits ou bytes em um computador. Vimos que o bit é a menor unidade de informação nos computadores atuais. Como ele possui apenas dois valores possíveis (0 e 1), é representado usando a base binária. Se refizermos o exemplo anterior usando a base 2, teremos: 4.000 Kb (4.000 x 2¹⁰ = 4.096.000 bits) 567 MB (567 x 2²⁰ = 594.542.592 bytes) Dessa forma, podemos usar múltiplos e submúltiplos com diferentes bases numéricas para representar valores em unidades de informação, como bits e bytes. Isso nos permite expressar quantidades maiores ou menores de forma mais conveniente e compreensível. A tabela a seguir mostra alguns prefixos empregados na computação a fim de abreviar valores medidos em uma unidade base (por exemplo, bit ou byte) para valores em potências de 2 (binário) e de 10 (decimal): Unidade Valor em potência de 2 Valor unitário Valor em potência de 10 Valor unitário 1K (quilo) 210 1024 103 1.000 1M (mega) 220 1.048.576 106 1.000.000 1G (giga) 230 1.073.741.824 109 1.000.000.000 1T (tera) 240 1.099.511.627.776 1012 1.000.000.000.000 Esses são os prefixos tipicamente adotados na computação com unidades de medida para exprimir valores de grandezas muito maiores ou menores que aqueles da unidade usada sem um prefixo. Os valores unitários podem ser obtidos a partir da notação dos múltiplos da grandeza em: T3 - M1/M2/M3/M4 5 Potência de 2 Expressam os valores (em decimal) que, de fato, são manipulados pelo computador em binário. Potência de 10 Exprimem os valores (em decimal) equivalentes àqueles manipulados pelo computador em binário, embora empreguem os múltiplos no sistema decimal comumente utilizado no nosso dia a dia. Suponha que você queira mudar o prefixo do valor a seguir: 52,9 GB para TB? Usando como referência os valores mostrados na tabela anterior, veja uma maneira de realizar isso: 1. Escrever os prefixos em sua sequência (B, KB, MB etc.). 2. Colocar o valor (no caso, 52,9) embaixo da unidade com o prefixo dado. Esse será seu ponto de partida ou ponto de referência relacionado ao novo valor obtido. 3. Desenhar uma seta no sentido do prefixo pretendido. Do lado esquerdo dela, fica o operador matemático "+"; do direito, o sinal "-". O sinal resultante fica ao lado do valor do expoente da base utilizada. Assim, você terá: Conforme os valores mostrados na tabela anterior, observemos sua aplicação com múltiplos nas potências de 10 e de 2: Potência de 10 52,9 x 10^-3 = 0,0529 TB Potência de 2 52,9 x 2^-10TB ^0,05166 Vamos explicar de forma mais didática a aplicação dos múltiplos nas potências de 10 e 2, usando os valores da tabela anterior. Quando trabalhamos com potências de 10, podemos utilizar os múltiplos para facilitar a representação de valores. Vamos considerar o exemplo: 52,9 x 10^(-3) = 0,0529 TB Isso significa que, ao considerar os múltiplos na potência de 10, o valor é aproximadamente 0,0529 terabytes (TB). Agora, se trabalharmos com potências de 2, o cálculo não é tão simples como na potência de 10. Uma sugestão é deixar o valor no formato de notação científica. No entanto, se você ainda quiser realizar o cálculo, o valor será aproximadamente 0,05166 TB. Entre dois prefixos de unidades de medida comumente usados na computação, como giga (G) e mega (M), o expoente da base decimal geralmente varia de 3 em 3 (ou de 10 em 10, se considerarmos a base binária). Por exemplo, a diferença de valor entre giga (G) e mega (M) é de 10^3 na potência de 10 e de 2^10 na potência de 2. Da mesma forma, entre tera (T) e giga (G), os valores das potências de 10 e 2 são mantidos: , respectivamente. Entre giga (G) e quilo (K), encontramos o seguinte valor: Isso significa que a diferença entre giga (G) e quilo (K) é de 10^6 na potência de 10 e de 2^20 na potência de 2. Esses múltiplos nos permitem representar valores de forma mais conveniente em unidades de medida, levando em conta as diferentes bases numéricas utilizadas na computação. 10 e2 03 1 10 x10 =3 3 10 , ou2 0x2 0 =6 1 1 2 0.2 T3 - M1/M2/M3/M4 6 Esta imagem ilustra alguns exemplos: Suponhamos que você deseje novamente mudar o prefixo do valor a seguir: 143GB —— KB? Para isso, você deverá fazer o seguinte: Vejamos, por fim, os cálculos nas potências de 10 e de 2: Potência de 10 Potência de 2 🎬 Representação das Informações no Computador Vamos aprender um pouco mais sobre a representação das informações no computador. A unidade fundamental usada é o bit, que representa números na base binária, composta pelos dígitos 0 e 1. Apesar de parecer limitado, podemos representar uma variedade de informações ao agrupar esses bits. Quando olhamos para o interior do computador, percebemos que ele é uma máquina composta por componentes eletrônicos e alimentada por energia elétrica. Podemos associar os valores 0 e 1 a diferentes estados de tensão elétrica nos componentes. Por exemplo, o bit 0 pode ser associado a uma voltagem negativa e o bit 1 a uma voltagem positiva. Aplicamos o conceito de representação binária aos diversos elementos que compõem um sistema de computação. Da mesma forma que usamos palavras, caracteres e frases na nossa vida cotidiana, no computador utilizamos bits agrupados em bytes, caracteres, palavras de dados, registros de dados, arquivos de dados e, por fim, bancos de dados. Dessa forma, o bit abstrai os componentes físicos do computador e associa a eles um significado que faz sentido para nós, seres humanos. Para entender o funcionamentode um computador e como as informações são representadas nele, é essencial dar os primeiros passos nesse conhecimento. Independente da área em que você deseja atuar na computação, é importante 143x10 =6 143.000.000KB 143x2 0 =2 149.946.368KB T3 - M1/M2/M3/M4 7 compreender como os dados são codificados. Tudo o que é adequado para ser processado em computadores digitais é representado como uma sequência de 0s e 1s. Isso inclui diferentes tipos de dados, como números, textos, arquivos executáveis, imagens, áudio e vídeo. Por exemplo, existem métodos padrão de codificação amplamente utilizados para cada tipo de dado. Vamos mencionar alguns deles: Padrão ASCII: Esse padrão associa um número binário de 7 bits a cada um dos 128 caracteres distintos possíveis. Ele permite a representação de letras, números, símbolos e caracteres especiais em formato de código binário. Formato de arquivo MP3: Esse formato especifica como um arquivo de áudio é codificado como uma sequência de 0s e 1s. É um formato popular para armazenar músicas e sons. Formato de imagem .png: Esse formato especifica como os pixels de uma imagem digital são codificados como uma sequência de 0s e 1s. É utilizado para armazenar imagens com alta qualidade e compressão sem perda de dados. Esses são apenas alguns exemplos de como os dados são codificados no computador. Entender esses métodos de codificação é essencial para trabalhar com eficiência e compreender como as informações são representadas e processadas pelos sistemas computacionais. 🎬 Representação de dados e conversão de unidades de medida Vamos falar um pouco sobre a representação de dados. Assim como nós, seres humanos, temos nossa linguagem para nos comunicar, os computadores também possuem sua própria linguagem e forma de representar informações. A unidade mais elementar dessa linguagem é o bit. O bit é a menor unidade de informação e é abstraído pelos números 0 e 1, pertencentes ao sistema de numeração binário. Enquanto nós contamos na base 10, de 0 a 9, os computadores contam apenas em bits, utilizando 0s e 1s. Vamos falar um pouco mais sobre bits. Existe uma convenção chamada byte, onde 8 bits correspondem a um byte. É fácil converter entre eles. Por exemplo, se você quiser saber quantos bytes são equivalentes a 32 bits, basta fazer uma regra de três simples. Sabendo que 8 bits equivalem a 1 byte, você terá a proporção de 8x = 32, resultando em x = 32 / 8, que é igual a 4 bytes. Além dos bits e bytes, existem outras unidades de medida para representar a quantidade de dados. Temos palavras, que são grupos de bits, registros, arquivos e bancos de dados. Provavelmente você já viu essas unidades quando comprou um disco rígido ou um pen drive, por exemplo, onde as capacidades são medidas em gigabytes (GB). O gigabyte é um múltiplo e submúltiplo do byte. Assim como temos múltiplos e submúltiplos das unidades de medida de distância, como metro, decímetro, centímetro e milímetro, no caso dos bits e bytes, temos bit, byte, kilobit, megabit, gigabit e terabit. O mesmo vale para os múltiplos do byte, que são byte, kilobyte, megabyte e gigabyte. Agora, vamos ver como fazer a conversão entre esses múltiplos e submúltiplos. Por exemplo, se você deseja converter 32 kilobytes para megabytes, você pode usar a seguinte técnica: escreva as unidades de medida em uma escala, como byte, kilobyte, megabyte. Cada conversão é feita multiplicando o número desejado pela base elevada a um expoente. Por exemplo, de kilobyte para megabyte, usamos 10 elevado a 3 na base 10, ou 2 elevado a 10 na base binária. Agora, vamos realizar o cálculo. Pegue o número que você deseja converter e coloque-o abaixo da unidade de medida. Imagine que você tem uma régua abaixo desse número. Se você considerar os dígitos à direita do número, coloque um sinal negativo no expoente. Se considerar os dígitos à esquerda, coloque um sinal positivo. Isso é chamado de notação científica. Realizando o cálculo, teremos 32 x 10 elevado a -3, ou 32 x 2 elevado a -10. Convertendo para a base 10, temos 0,032 megabytes. Essa é uma técnica rápida e fácil para obter os valores em múltiplos e submúltiplos de gigabytes, megabytes, kilobytes, etc. Exercicios Questão 1 A quantos bits equivalem 256 bytes? A) 32 bits B) 256 bits C) 1.024 bits T3 - M1/M2/M3/M4 8 D) 2.048 bits E) 4.096 bits A alternativa D está correta. Considerando que 8 bits é igual a 1 byte e fazendo uma regra de três simples, temos o seguinte resultado: 8 bits --- 1 byte x --- 256 bytes x = 256 * 8 = 2.048 bits Questão 2 Passe 0,876 MB para o prefixo de múltiplo ou submúltiplo da unidade indicada: TB. Qual é o seu resultado? A) 0,000000876 TB B) 0,00876 TB C) 876 TB D) 876.000 TB E) 876.000.000 TB A alternativa A está correta. Note que estamos considerando os múltiplos em potências de 10. Desse modo, devemos fazer o cálculo segundo os valores mostrados na tabela que estudamos de prefixos adotados na computação: 0,876 x 10-6 = 0,000000876 TB. Além disso, devemos escrever os prefixos em sequência e colocar o valor de partida embaixo do prefixo dado, desenhando a seta no sentido do prefixo desejado. Se o sentido dela for para a esquerda, multiplicaremos o valor fornecido pela base elevada ao expoente positivo. Caso ela se volte para a direita, a multiplicação desse valor será feita com o expoente negativo. Veja: M2 - Sistemas de Numeração e Operações Aritméticas 🎬 Sistemas de Numeração Vamos aprender um pouco sobre os sistemas de numeração e entender as bases utilizadas pelos computadores. É importante estudarmos o sistema de numeração para compreendermos a base binária, que é a base numérica utilizada pelos computadores, juntamente com as bases 8 e 16. Tudo começa com o sistema posicional, que é o sistema que usamos em nosso dia a dia. Nesse sistema, cada algarismo tem um valor relativo de acordo com a sua posição no número. Por exemplo, vamos analisar o número 444. O algarismo 4 mais à direita está na posição zero e tem o valor de 4. Se avançarmos uma posição para a esquerda, vamos para a posição 1, e esse 4 tem o valor de 40. Se avançarmos mais uma posição para a esquerda, na posição 2, temos outro 4, que tem o valor de 400. Somando 400 + 40 + 4, obtemos o número 444. Esse é um exemplo de um número na base 10, também conhecida como base decimal, que possui os algarismos de 0 a 9. Além da base decimal, existem outras bases numéricas. A base de um sistema determina a quantidade de símbolos utilizados em um sistema posicional, e o número da base indica o total de símbolos dessa base. Na base binária, por exemplo, temos apenas dois símbolos, que são 0 e 1. Na base 8, chamada octal, temos 8 símbolos, de 0 a 7. Já na base 16, chamada hexadecimal, temos 16 símbolos, de 0 a 9, e depois das letras A a F, totalizando 16 símbolos. T3 - M1/M2/M3/M4 9 Bases de Numeração Os fundamentos do-s sistemas de numeração posicionais são indispensáveis para o entendimento da formação dos números nas chamadas bases de numeração. Daremos um enfoque às seguintes bases: Decimal: Essa é a base numérica mais comumente usada em nosso dia a dia. É a base 10, onde temos 10 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Binária: Essa é a base utilizada pelos computadores no processamento de dados. É a base 2, onde temos apenas dois símbolos (0 e 1). Octal e hexadecimal: Essas bases são múltiplos da base binária. O octal é base 8, com 8 símbolos (0, 1, 2, 3, 4, 5, 6, 7), e o hexadecimal é base 16, com 16 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Para entender como esses sistemas de numeração funcionam, vamos apresentá-los. Sistema posicional Nesse sistema, cada algarismo tem um valor relativo de acordo com a sua posição no número. Por exemplo, no sistema decimal, o número 247 significa 2 centenas, 4 dezenas e 7 unidades. À medida que os algarismos são acrescentados à esquerda, o valor do número cresce em grupos de 10. Cada sistema posicional tem uma base, que é a quantidade de símbolos utilizadosnele. Por exemplo, no sistema decimal, temos 10 símbolos (0 a 9). No sistema binário, temos apenas 2 símbolos (0 e 1). No sistema octal, temos 8 símbolos (0 a 7). No sistema hexadecimal, temos 16 símbolos (0 a 9 e A a F). Em qualquer sistema posicional, cada algarismo em um número tem um valor baseado em potências da base. A unidade de uma posição em um sistema com base "Z" tem um valor equivalente a "Z" unidades da posição imediatamente à direita. Além disso, os números em um sistema posicional são formados da seguinte maneira: Da direita para a esquerda Retorno a 0 T3 - M1/M2/M3/M4 10 Os valores aumentam a partir de 0 e vão até o último algarismo válido. Por exemplo, no sistema decimal, os algarismos vão de 0 a 9. No sistema binário, vão de 0 a 1. Quando chegamos ao último algarismo válido em uma posição, ele retorna a 0 e a próxima posição à esquerda aumenta uma unidade. Por exemplo, no sistema decimal, depois de 9, temos 10, 11, 12 e assim por diante. Esses movimentos se repetem infinitamente, permitindo a representação de números em diferentes bases. Sistema Não Posicional Há também sistemas não posicionais, onde cada algarismo tem um valor fixo, independentemente de sua posição no número. Um exemplo disso é o sistema de numeração romano (Este sistema de numeração é não posicional), onde o algarismo X sempre tem o valor 10. XXX = 30 XL = 40 LX = 60 🎬 Operações aritméticas com números inteiros em qualquer base Você sabia que é possível realizar operações aritméticas com números em bases diferentes da base decimal? Vou te explicar como fazer. Partimos do princípio de que já sabemos fazer operações na base decimal e vamos trazer esse conhecimento para as outras bases. Vamos começar com um exemplo de soma na base 16 (hexadecimal). Você realiza a operação normalmente em decimal e, em seguida, converte o resultado para a base desejada. Por exemplo, temos 4 + C. O valor de C em decimal é 12, então 12 + 4 é igual a 16. No entanto, o número 16 em decimal convertido para a base 16 é representado por 10. Portanto, o resultado dessa soma será 10 em hexadecimal. Agora, vamos fazer uma operação de soma na base 2 (binária). Da mesma forma, você realiza a operação normalmente em decimal e, em seguida, converte para a base binária. Por exemplo, temos 1 + 1. Na base 2, temos apenas os dígitos 0 e 1. Quando somamos 1 + 1, o resultado é 10 em decimal, mas na base binária, escrevemos como 10. Agora, vamos ver uma operação de subtração na base 16. Você subtrai os valores normalmente, levando em consideração o empréstimo na base 16. Por exemplo, temos B4 - 2C. Primeiro, subtraímos o valor das unidades (4 - C), mas como estamos na base 16, precisamos pedir emprestado o valor da base, que é 16. Então, 16 + 4 é igual a 20, e 20 - C é igual a 8 (representado pela letra A na base 16). Por fim, vamos fazer uma operação de subtração na base 8 (octal). Novamente, realizamos a subtração normalmente, levando em consideração o empréstimo na base 8. Por exemplo, temos 3 - 7. Pedimos emprestado oito, então 8 + 3 é igual a 11, e 11 - 7 é igual a 4. Vamos aprender sobre as operações aritméticas em diferentes bases numéricas. Dentro de um processador, que é uma unidade especializada chamada unidade lógica e aritmética, são realizadas operações lógicas e aritméticas usando circuitos lógicos digitais. A unidade básica para representar dados é o bit. Vamos ver as operações de adição e subtração. Adição Na adição, somamos cada algarismo, começando da direita para a esquerda. Para cada par de algarismos na mesma coluna, somamos e consideramos um possível "vai 1" para a próxima coluna à esquerda. Se a soma de dois algarismos for igual ou maior que o valor da base, subtraímos o valor da base e colocamos o resultado na posição correspondente. Passamos um "vai 1" para a posição imediata à esquerda, que será somado aos dois algarismos seguintes. Vamos ver alguns exemplos para entender melhor esse conceito. Na base 10: Essa é a base numérica mais utilizada no nosso dia a dia. Na adição em base 10, somamos os algarismos normalmente. T3 - M1/M2/M3/M4 11 Na base 2 (binária): Na base binária, onde temos apenas 0 e 1, a soma de 1 + 1 é igual a 0, com um "vai 1" (carry) de valor 1 para a próxima coluna à esquerda. Na base 16 (hexadecimal): Antes de abordarmos as regras para cálculos com números hexadecimais, é importante conhecer a equivalência dos números decimais e seus respectivos números hexadecimais. Base 10 0 1 2 3 4 5 6 Base 16 0 1 2 3 4 5 6 Base 10 16 17 18 19 20 21 22 Base 16 10 11 12 13 14 15 16 Base 10 32 33 34 35 36 37 38 Base 16 20 21 22 23 24 25 26 Uma maneira de pensar na adição em qualquer base é a seguinte: 1. Some os números na posição como se estivesse em base 10. 2. Se o resultado passar do maior algarismo da base, subtraia esse valor da base e coloque o resultado na respectiva posição. 3. Não se esqueça do "vai 1" para a próxima posição. Vamos usar um exemplo na base 8: 1. Somamos na base 10 (decimal): 4 + 5 = 9. 2. Como o resultado é maior que o maior algarismo da base 8 (7), subtraímos 8 do resultado: 9 - 8 = 1. 3. Passamos um "vai 1" para a próxima posição: 6 + 3 + 1 = 10. Como o resultado é maior que 7, subtraímos 8 novamente: 10 - 8 = 2. E assim continuamos, passando "vai 1" para as próximas posições conforme necessário. T3 - M1/M2/M3/M4 12 Subtração Vamos estudar as operações de subtração em diferentes bases numéricas. Na subtração, subtraímos cada algarismo, da direita para a esquerda, em pares da mesma coluna. Quando o minuendo (algarismo superior) é maior que o subtraendo (algarismo inferior), realizamos a operação normalmente e registramos a diferença abaixo. Porém, quando o minuendo é menor que o subtraendo, precisamos "pedir emprestado" uma unidade do algarismo à esquerda. Isso significa que adicionamos o valor da base ao valor do minuendo à direita e realizamos a subtração. Vamos observar os exemplos a seguir para entender melhor esse conceito: Na base 10: Realizamos a subtração normalmente, subtraindo cada algarismo da mesma coluna. Na base 16: No sistema hexadecimal, o valor do "pede emprestado" é igual a 16. Na 1ª posição: No exemplo, temos 4 - 7. Como o minuendo é menor que o subtraendo, pedimos emprestado o valor da base (16) para o dígito vizinho. Então, fazemos 16 + 4 = 20. A subtração é 20 - 7 = 13. Em hexadecimal, 13 (na base 10) é representado por D (na base 16). Na 2ª posição: O valor 9 vale 8, pois "emprestou" ao dígito na 1ª posição do minuendo. Fazemos 8 - 7 = 1. Na 3ª posição: O valor D na base 16 vale 13 na base 10 e o valor E na base 16 vale 14 na base 10. Pedindo emprestado, o dígito da 2ª posição no minuendo será 13 + 16 = 29. Então, 29 - 14 = 15, que, em hexadecimal, é representado por F. Na 4ª posição: O valor C na base 16 vale 12 na base 10. O valor 12 vale 11, pois "emprestou" ao dígito na 1ª posição do minuendo. Fazemos 11 - 8 = 3. Equivalência dos números decimais e seus respectivos hexadecimais Na base 2: No sistema binário, a subtração parece ser mais complicada. Quando temos 0 - 1, precisamos "pedir emprestado" do primeiro algarismo diferente de 0. Esse "pede emprestado" vale 2 em decimal, pois estamos lidando com números binários. T3 - M1/M2/M3/M4 13 Por exemplo: 0 - 1 = 1 (e "pede emprestado" do dígito seguinte); 1 - 1 = 0; 1 - 0 = 1; 0 - 1 = 0. Quando encontramos 0 - 1, o zero desta coluna vale 2 e todos os zeros à esquerda até o primeiro "número 1" valem 1. Esse "primeiro número 1" vale 0 (zero). Se a situação 0 - 1 acontecer novamente, o processo se repetirá. Portanto, o valor do "pede emprestado" no sistema binário é 2. Computação útil Com os avanços tecnológicos, muitas vezes não nos preocupamos com os aspectos fundamentais da computação, mas entender esses conceitos nos permite pensar como projetistas de máquinas e linguagens de programação. Isso pode nos ajudar a desenvolver protótipos que fazem a diferença tecnologicamente. Antigamente, era difícilfazer computação com apenas 4.096 bits de memória, mas o avanço da tecnologia minimizou essas restrições. Hoje em dia, é bastante viável desenvolver implementações em linguagem de máquina que realizam uma variedade de tarefas. No passado, a maioria dos primeiros programas aplicativos foi implementada em linguagem de máquina ou assembly. Isso acontecia porque, por muito tempo, o uso de linguagens de alto nível tinha um desempenho significativamente pior, e a maioria dos códigos precisava ser escrita em assembly. A linguagem assembly é semelhante à linguagem de máquina, mas permite o uso de nomes simbólicos para códigos de operação, registros e localizações de memória. Na década de 1970, era comum ver programas em linguagem assembly com dezenas de milhares de linhas de código. 🎬 Sistemas de numeração posicionais e não posicionais e operações aritméticas com números inteiros Hoje vamos falar sobre representação de dados e bases numéricas. Os números podem ser representados por conjuntos de símbolos, e cada base numérica tem uma quantidade específica de símbolos que representa os números. Existem dois tipos de sistemas numéricos: os não posicionais e os posicionais. Nos sistemas não posicionais, o valor do número não depende da posição em que um algarismo está. Um exemplo disso é o sistema romano. Já nos sistemas posicionais, o valor do número está diretamente relacionado à posição do algarismo. É nesse tipo de sistema que trabalhamos normalmente. Por exemplo, usamos a base decimal, que possui 10 números, de 0 a 9. Além da base decimal, existem outras bases numéricas. Por exemplo, na base 7, temos sete algarismos, de 0 a 6. É importante lembrar que, na base 7, o último algarismo é 6, não 7. O último algarismo em qualquer base é sempre um a menos que a base em si. Por exemplo, se representamos a base por B, o último algarismo será B - 1. Agora, vamos falar sobre as bases numéricas que o computador utiliza. O computador trabalha principalmente com a base 2, que é a base binária. A base binária é uma forma simples de representar informações dentro da máquina. Além da base 2, o computador também pode usar a base 8 (octal) e a base 16 (hexadecimal) em algumas aplicações, como representar os bytes de forma mais compacta. T3 - M1/M2/M3/M4 14 Para entender a conversão entre bases numéricas, vamos olhar para algumas tabelas. Vamos começar pela base 10, que você já está familiarizado. Temos 10 algarismos, de 0 a 9. Quando chegamos ao último algarismo, esgotamos todas as possibilidades e precisamos adicionar uma posição à esquerda. Então continuamos com 11, 12, 13, 14, 15 e assim por diante. Agora, vamos para a base 8. Temos oito algarismos, de 0 a 7. Quando chegamos ao último algarismo, zeramos a primeira posição e adicionamos um valor à esquerda. Continuamos com 10, 11, 12 e assim por diante. Na base 16, temos 16 algarismos, de 0 a 9. Mas depois do 9, não temos mais algarismos para representar valores acima disso. Então, usamos as letras do alfabeto. A partir do 10 (que é o nosso 10 em decimal), representamos os números com as letras A, B, C e assim por diante. Só depois disso é que colocamos o 10. Agora vamos para a base 2, que é a base binária. Temos apenas dois algarismos, 0 e 1. Quando chegamos ao limite, zeramos a posição e adicionamos uma posição à esquerda. Por exemplo, 1 + 1 é igual a 10 em binário. Seguimos esse padrão conforme adicionamos mais algarismos. Com essas tabelas, podemos converter números entre diferentes bases. Vamos fazer alguns exemplos de adição. Na base 16, se somarmos B4 + 2C, precisamos lembrar que C é igual a 12 em decimal. Então, somamos normalmente em decimal: 12 + 4 é igual a 16. Mas como estamos na base 16, o resultado é representado como 10 em hexadecimal. Continuamos somando, levando em conta a base: 10 + 2 é igual a 12 em decimal, que é representado como C em hexadecimal. Portanto, o resultado final é BC em hexadecimal. Vamos fazer mais um exemplo de adição, agora na base 2. Se somarmos 1 + 111, quando chegamos ao limite, zeramos a posição e adicionamos uma à esquerda. Conforme aplicamos esse princípio, obtemos 1010. Lembrando que à esquerda do número temos zeros, ou seja, crescemos um valor toda vez que atingimos o limite da posição. Agora, vamos fazer alguns exemplos de subtração. Na base 16, se subtrairmos B4 - 2C, emprestamos da posição à esquerda. Fazemos a soma da base (16) com o número (4), que resulta em 20. Em seguida, fazemos a subtração normalmente: 20 - 12 é igual a 8, e 10 - 2 é igual a 8. Portanto, o resultado é 88 em hexadecimal. Para o último exemplo, na base 8, se subtrairmos 63 - 57, também emprestamos da posição à esquerda. Subtraímos normalmente: 7 - 7 é igual a 0, 5 - 5 é igual a 0, e 6 - 5 é igual a 1. Portanto, o resultado é 10 em octal. Exercícios Questão 1 A partir do valor 2456 em base 7, os cinco valores seguintes são: A) 2456; 2457; 2458; 2459; 2460. B) 2456; 2457; 2460; 2461; 2461. C) 2457; 2460; 2461; 2462; 2463. D) 2460; 2461; 2462; 2463; 2464. E) 2461; 2462; 2463; 2464; 2465. A alternativa D está correta. Vamos à análise: 1º número Partiremos do número 2456. Lembre-se de que, quando a contagem chega ao último algarismo válido de uma posição, ela retorna a 0 e cresce uma unidade para a esquerda. Na base 7, temos os seguintes algarismos: 0; 1; 2; 3; 4; 5; 6. Não existe número 7! A contagem já está no último algarismo válido de uma posição. Ele retorna a 0 e cresce uma unidade para a esquerda: 2460. 2º, 3º, 4º e 5º números Comece a contagem normalmente a partir do 0, voltando à “posição 0” mais à direita: 2461; 2462; 2463; 2464. Questão 2 A partir do valor binário 1100101, os quatro números seguintes, saltando de dois em dois, são: A) 1100111; 1101001; 1101011; 1101101. B) 1100110; 1100111; 1101000; 1101001. C) 1100101; 1100111; 1100101; 1100111. T3 - M1/M2/M3/M4 15 D) 1100111; 1100112; 1100113; 1100114. E) 1100113, 1100115, 1100117, 1100119. A alternativa A está correta. Vamos à análise: 1º número Partiremos do número 1100101. Lembre-se de que, quando a contagem chega ao último algarismo válido de uma posição, ela retorna a 0 e cresce uma unidade para a esquerda. Na base binária, temos os seguintes algarismos: 0; 1. Siga os mesmos passos do exercício 1, mas “salte” a escrita das respostas de dois em dois. A dica, portanto, é escrever os oito números seguintes saltando de dois em dois. Assim, temos: 1100110; 1100111; 11001000; 1101001; 1101010; 1101011; 1101100; 1101101. “Saltando” de dois em dois números, resta esta sequência: 1100111; 1101001; 1101011; 1101101. M3 - Conversão Conversão entre sistemas de numeração Os sistemas de computação normalmente usam a base 2, também conhecida como binária, para representar seus valores. No entanto, às vezes é necessário representar esses valores em outras bases para facilitar a visualização e compactação. Duas bases comumente usadas são a base 8, conhecida como octal, e a base 16, conhecida como hexadecimal. Essas bases são escolhidas porque são múltiplas de 2. Na tabela apresentada, podemos ver a equivalência dos valores nas bases 2, 8, 10 e 16. Ela mostra como os números são representados em cada base, desde 0 até 15, além de alguns números maiores. Tabela de conversão de bases Base 2 Base 8 Base 10 Base 16 0 0 0 0 1 1 1 1 10 2 2 2 11 3 3 3 100 4 4 4 101 5 5 5 110 6 6 6 111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 10000 20 16 10 10001 21 17 11 Quando trabalhamos com bases maiores que 10, utilizamos letras do alfabeto para representar algarismos maiores que 9. As tabelas adicionais comparam os valores entre as bases 10 e 16, mostrando como os números são representados em cada uma delas. T3 - M1/M2/M3/M4 16 Base 10 0 1 2 3 4 5 6 Base 16 0 1 2 3 4 5 6 Base 10 16 17 18 19 20 21 22 Base 16 10 11 12 13 14 15 16 Base 10 32 33 34 35 36 37 38 Base 16 20 21 22 23 24 25 26 De uma base X para outra Y Existem duas maneirasde realizar a conversão de valores entre bases diferentes. Sempre precisamos passar pela base 10 como intermediária, pois ela é usada para cálculos aritméticos. No vídeo a seguir, você pode aprender como converter um número escrito em uma base X para a base 10. 🎬 Conversão entre sistema de numeração de uma base b para base 10 Vamos aprender sobre a conversão de números de uma base para outra usando a base 10 como intermediária. Vou explicar passo a passo usando um exemplo. Suponha que queremos converter o número 214 da base 5 para a base 7. Para fazer isso, vamos seguir alguns passos simples. Primeiro, pegamos cada algarismo do número na base 5 e multiplicamos pelo valor da base elevado à posição do algarismo. Começamos da direita para a esquerda, contando as posições a partir do zero. No número 214, o algarismo 4 está na posição zero, o algarismo 1 está na posição 1 e o algarismo 2 está na posição 2. Agora, vamos calcular cada parte da conversão. Para o algarismo 4, temos 4 multiplicado por 5 elevado à posição 0 (que é 1), o que resulta em 4. Para o algarismo 1, temos 1 multiplicado por 5 elevado à posição 1 (que é 5), o que resulta em 5. Para o algarismo 2, temos 2 multiplicado por 5 elevado à posição 2 (que é 25), o que resulta em 50. Agora, somamos todas as partes: 4 + 5 + 50 = 59. Portanto, o número 214 na base 5 é equivalente a 59 na base 7. Espero que tenha ficado claro como realizar a conversão usando a base 10 como intermediária. No próximo vídeo, abordaremos a conversão de números da base 10 para outra base. Em seguida, converte-se o resultado da conversão para base 10 para a base Y, conforme vídeo abaixo. 🎬 Conversão entre sistema de numeração de uma base 10 para base b Vamos aprender como converter um número de uma base para outra, utilizando a base 10 como intermediária. A ideia é que, ao converter um número de uma base para outra diferente da base 10, primeiro o convertamos para a base 10 e, em seguida, o convertamos para a base desejada. Vamos usar o exemplo de converter o número 214 da base 5 para a base 7. O primeiro passo é converter o número 214 para a base 10. Para fazer isso, pegamos cada algarismo do número na base 5, multiplicamos pela base elevada à posição do algarismo e somamos essas operações. No caso do número 214, temos: 2 * 5^2 + 1 * 5^1 + 4 * 5^0 = 50 + 5 + 4 = 59. Portanto, o número 214 na base 5 é equivalente a 59 na base 10. Agora que temos o número na base 10, podemos prosseguir para a conversão para a base 7. Faremos sucessivas operações de divisão até que o quociente seja zero. Os restos obtidos serão agrupados do último para o primeiro, formando o número na base desejada. Começando com o número 59, vamos dividi-lo pela base 7: 59 ÷ 7 = 8, com resto 3. Em seguida, dividimos 8 por 7: 8 ÷ 7 = 1, com resto 1. Por fim, dividimos 1 por 7: 1 ÷ 7 = 0, com resto 1. Agora, agrupamos os restos do último para o primeiro: 113. Portanto, o número 214 na base 5 é equivalente ao número 113 na base 7. T3 - M1/M2/M3/M4 17 Essa é a forma de converter um número de uma base para outra. Espero que você tenha compreendido. Nos vemos no próximo vídeo! Vamos seguir os passos abaixo para converter o número 234 da base 6 para a base 8: 1. Primeiro, expressamos o número a ser convertido como uma soma de produtos. Cada algarismo é multiplicado pela potência da base correspondente. No nosso caso, temos: 2346 = 2 * 6^2 + 3 * 6^1 + 4 * 6^0 2. Agora, calculamos os produtos usando a aritmética da base 10 para obter um resultado decimal. Continuando com o cálculo, temos: (2 * 36) + 18 + 4 = 94 3. Em seguida, convertemos o resultado decimal (94) para a base desejada, que é a base 8. Esse processo envolve a divisão sucessiva do valor pelo número da base. O resto obtido em cada divisão será o algarismo correspondente do número desejado. Começamos dividindo 94 por 8: 94 / 8 = 11 com resto 6 4. O quociente obtido, que é 11, é dividido novamente por 8: 11 / 8 = 1 com resto 3 5. Agora, o resto obtido (3) é adicionado à esquerda do resto anterior (6), formando o número desejado na base 8. Assim, temos: 36 6. Continuamos a divisão até obtermos um quociente zero: 1 / 8 = 0 com resto 1 7. O número final obtido na base 8 é 1368. Dessa forma, realizamos a conversão do número 234 da base 6 para a base 8, obtendo o resultado 1368. Casos Especiais As conversões entre as bases bases 2 e 8; 2 e 16; e 8 e 16 podem ser feitas usando um método específico. Tenha em mente o seguinte: se você tomar o valor da base binária (=2, pois está representado em decimal) e o elevar à sua posição (em decimal), obterá o valor relativo da posição da base 2 representado em decimal. Vamos analisar dois exemplos para entender melhor. No primeiro exemplo, temos três bits: 0, 1, 0. Cada bit representa um valor relativo dependendo da posição em que está. Quando o bit é 1, significa que ele está "ligado" naquela posição, e quando é 0, significa que está "desligado". Logo, o valor final em decimal será a soma de todos os valores (escritos em decimal) relativos das posições em que estiverem “ligados”. Para “ligar” algumas posições, colocaremos, agora, o valor 1 nelas: T3 - M1/M2/M3/M4 18 No caso dos três bits, colocamos o valor 1 nas posições 0 e 2, como mostrado na figura. Agora, para obter o valor em decimal, somamos os valores relativos das posições em que os bits estão "ligados". No exemplo, temos 4 (posição 2) + 1 (posição 0) = 5. Portanto, o número binário 101 corresponde ao valor 5 em decimal. Essa relação entre as posições e os valores relativos pode ser vista na tabela fornecida no texto. Por exemplo, na base 2, a posição 0 tem valor 1, a posição 1 tem valor 2, a posição 2 tem valor 4 e assim por diante. A tabela a seguir mostra algumas correspondências: 20 = 1 27 = 128 21 = 2 28 = 256 22 = 4 29 = 512 23 = 8 210 = 1024 24 = 16 211 = 2048 25 = 32 212 = 4096 26 = 64 (...) Com essas informações, podemos realizar conversões entre as bases. O método é semelhante para os casos especiais mencionados, ou seja, entre as bases 2 e 8, 2 e 16, e 8 e 16. O valor em binário é convertido para decimal usando a relação entre as posições e os valores relativos. Em seguida, o valor decimal é convertido para a base desejada. Bases 2 e 8 Como 8 = 23, dividimos o valor, partindo da direita para a esquerda, em grupos de três bits: (111010111)2 =( )8 (111) (010) (111)2 =(727)8 7 2 7 Bases 2 e 16 Como 16 = 24, dividimos o valor, partindo da direita para a esquerda, em grupos de quatro bits: (1011011011)2 =( )16 (0010) (1101) (1011)2 =(2DB)16 2 D B Bases 8 e 16 Converte-se primeiramente para a base 2 e, em seguida, para a desejada: (3174)8 = ( )16 Observemos, agora, as conversões para as bases: 2 -> (011) (001) (111) (100)2 = (011001111100)2 16 -> (0110) (0111) (1100) = (67C)16 O resultado da conversão, portanto, será: 67C. Lógica Booleana Além de sabermos que um computador usa bits para representar seus dados, também entendemos como são realizadas operações matemáticas e a conversão de valores para outras bases numéricas. Essas bases numéricas permitem compactar os números binários. Os valores binários seguem a lógica booleana, que envolve a ideia de verdadeiro e falso, sim e não, ou 0 e 1. Independentemente da escolha dessas referências, o conceito é o mesmo. Existe uma conexão importante entre a lógica booleana e os circuitos que executam tarefas computacionais. Essa conexão é essencial para a estruturação da infraestrutura dos computadores que usamos hoje em dia. Quando entendemos essa conexão, conseguimos responder à pergunta feita por Sedgewick e Wayne (2017): "Como os circuitos realizam cálculos?". Ao compreendermos como os circuitos lógicos funcionam, também percebemos a importância de T3 - M1/M2/M3/M4 19 representar os valores binários 0 e 1 em outras bases numéricas. 🎬 Conversão de valores entre bases numéricas distintas Vamos aprender como converter números de uma base para outra. O computador trabalha com a base binária, usando0 e 1 para representar informações. Nós, seres humanos, usamos a base decimal (base 10) no nosso dia a dia. Além do binário, o computador também pode usar outras bases, como a base hexadecimal (base 16) ou a base octal (base 8). Por isso, é importante aprender a fazer conversões entre bases. Vamos começar com um cálculo que pode ser aplicado para converter um número de uma base X para uma base Y. Por exemplo, vamos converter o número 214 da base 5 para a base 7, utilizando a base 10 como intermediária. O cálculo é feito da seguinte maneira: pegamos cada algarismo do número na base 5, multiplicamos pela base 5 elevada à posição do algarismo e somamos essas operações. No final, obtemos um número na base decimal. No nosso exemplo, temos o número 214 na base 5. Vamos calcular: 2 x 5² + 1 x 5¹ + 4 x 5⁰ = 59 na base 10. Agora, vamos converter esse número para a base 7. Faremos sucessivas divisões por 7 até que o quociente seja zero. Os restos dessas divisões, lidos do último para o primeiro, formarão o número na base desejada. No nosso exemplo, dividindo 59 por 7, obtemos 8 com resto 3. Dividindo 8 por 7, obtemos 1 com resto 1. E dividindo 1 por 7, obtemos 0 com resto 1. Juntando esses restos do último para o primeiro, temos o número 113 na base 7, que é equivalente a 214 na base 5. Existe outro método mais rápido de conversão quando trabalhamos com bases que o computador usa, como o binário e o hexadecimal. Vamos aprender como converter um número da base 8 para a base 16. Antes disso, vou mostrar uma forma rápida de converter decimal para binário. Para isso, você coloca cada posição do número binário e eleva a base 2 à posição correspondente. Por exemplo, se temos o número binário 0100, a posição mais à direita corresponde a 2⁰, a próxima corresponde a 2¹, a próxima a 2², e assim por diante. Você multiplica cada posição ligada por seu valor relativo e soma todos os resultados. Por exemplo, se temos 0100, a posição 4 vale 16, a posição 2 vale 4, e a posição 0 não contribui para o cálculo. Somando 16 + 4, obtemos o resultado 20 em decimal. Agora, vamos ao nosso exemplo de conversão da base 8 para a base 16. Se temos o número 36 na base 8, vamos dividir cada algarismo em grupos de três bits e colocar o valor relativo à base (2) elevado à posição de cada bit. Cada posição com um bit ligado terá seu valor somado. No nosso exemplo, temos o número 3 e o número 6. Dividimos em grupos de três bits: 3 = 011 e 6 = 110. Agora, agrupamos em grupos de quatro bits: . M4 - Representação de Dados Tabelas de Representação de Dados Em uma tabela de representação de dados, cada símbolo, como letras e números, tem uma correspondência com um grupo de bits específico que o identifica. Quando digitamos um texto no teclado, os caracteres do alfabeto são convertidos em códigos codificados em bits. Existem diferentes tipos de dados que podem ser classificados da seguinte forma: Caractere: Representa símbolos não numéricos, como letras, sinais de pontuação e caracteres especiais. É a forma básica de inserir dados em um computador e permite escrever textos em qualquer idioma. Lógico: Representa valores de verdadeiro ou falso. É usado para expressar condições ou respostas binárias. Numérico: Representa números, como inteiros e números de ponto flutuante. Agora vamos apresentar dois conjuntos de códigos de caracteres que são amplamente utilizados: ASCII (American Standard Code for Information Interchange): É um conjunto de códigos que representa os caracteres mais comuns em inglês e outros símbolos utilizados em comunicações e computação. Esses conjuntos de códigos são essenciais para garantir que os dados sejam corretamente interpretados e processados pelos computadores. 🎬 Tabela de representação de dados ASCII Vamos falar sobre as tabelas de representação de dados no computador. O computador usa o sistema binário para representar informações e caracteres. Para exibir caracteres na tela ou em dispositivos de saída, precisamos de uma forma de converter os bits correspondentes em caracteres visíveis. Para isso, utilizamos as tabelas de representação de dados. T3 - M1/M2/M3/M4 20 Uma tabela comum é chamada de tabela ASCII, onde cada caractere possui um conjunto de bits associado a ele. Esses conjuntos de bits também podem ser representados em formato decimal ou hexadecimal. Por exemplo, na tabela ASCII, temos os caracteres "c" e "C" e seus equivalentes em decimal e hexadecimal. Se quisermos escrever a palavra "céu" usando a tabela ASCII, cada letra corresponde a um conjunto específico de bits. Por exemplo, o "c" maiúsculo equivale a um determinado conjunto binário, o "é" equivale a outro conjunto binário, e assim por diante. É importante ressaltar que a tabela ASCII é muito maior e contém uma variedade de caracteres. Além disso, existem regras para interpretar o significado desses conjuntos de bits em diferentes contextos. Espero que você esteja estudando esse assunto, pois é muito importante para entender como os caracteres são representados e processados pelo computador. American Standard Code for Information Interchange (em português, Código Padrão Americano para Troca de Informações). Cada caractere tem 7 bits + 1 de controle de erro. O ASCII possui um total de 128 caracteres (27) que podem ser expressos em hexadecimal. Os códigos 0 a 1F, por sua vez, não são impressos, pois ambos são caracteres de controle. Tanembaum (2007) informa que o ASCII ainda possui: Letras maiúsculas A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Letras minúsculas a b c d e f g h i j k l m n o p q r s t u v w x y z Sinais de pontuação ~ . , : ; " + = ! ? @ / # ( ) { } [ ] Símbolos matemáticos + * / - = As tabelas a seguir exibem o conjunto de caracteres ASCII: Hex Nome Significado Hex Nome Significado 0 NUL Null 10 DLE Data Link Scape 1 SOH Start Of Heading 11 DC1 Device Control 1 2 STX Start Of Text 12 DC2 Device Control 2 3 ETX End Of Text 13 DC3 Device Control 3 4 EOT End Of Transmission 14 DC4 Device Control 4 5 ENQ Enquiry 15 NAK Negative ACKnowledgement 6 ACK ACKnowledgement 16 SYN SYNchronous Idle 7 BEL BELI 17 ETB End Of Transmission Block 8 BS BackSpace 18 CAN CANcel 9 HT Horizontal Tab 19 EM End Of Medium A LF Line Feed 1a SUB SUBstitute B VT Vertical Tab 1B ESC ESCape C FF Form Feed 1C FS File Separator D CR Carriage Return 1D GS Group Separator E SO Shift Out 1E RS Record Separator F SI Shift In 1F US Unit Separator Hex Car. Hex Car. Hex Car. Hex Car. 20 (Space) 30 0 40 @ 50 P T3 - M1/M2/M3/M4 21 Hex Car. Hex Car. Hex Car. Hex Car. 21 ! 31 1 41 A 51 Q 22 " 32 2 42 B 52 R 23 # 33 3 43 C 53 S 24 $ 34 4 44 D 54 T 25 % 35 5 45 E 55 U 26 & 36 6 46 F 56 V 27 ' 37 7 47 G 57 W 28 ( 38 8 48 H 58 X 29 ) 39 9 49 I 59 Y 2A * 3A : 4A J 5A Z 2B + 3B ; 4B K 5B [ 2C , 3C < 4C L 5C \ 2D - 3D = 4D M 5D ] 2E . 3E > 4E N 5E ^ 2F / 3F ? 4F O 5F _ Unicode 🎬 Tabela de representação de dados UNICODE As tabelas de representação de dados são usadas pelos sistemas de computação para expressar os caracteres. Cada caractere possui um conjunto de bits que o define. Existem várias tabelas de representação de dados, como a ASCII, mas ela não é a única. Outro conjunto de representação muito utilizado atualmente é chamado de Unicode, que abrange um conjunto maior de caracteres. O Unicode suporta uma ampla variedade de caracteres e possui um formato de código específico para cada caractere. Por exemplo, para representar as letras maiúsculas "C" e "U" no Unicode, usamos a convenção de um sinal de "+" seguido do código associado a cada caractere. Se estivermos trabalhando em um programa ou software que precise definir a representação dos caracteres, podemos consultar a tabela de representação do Unicode. Ela está facilmente disponível na web, em sites especializados, e mostra quais tabelas compõem esse sistema de representação de dados. Falamos um pouco sobre as diferentes formas de representação de dados nos computadores. O ASCII é um bom conjunto de caracterespara textos de língua inglesa, mas não tanto para os demais idiomas, como japonês, chinês, árabe etc. Isso levou um grupo de empresas a criar o Unicode, padrão internacional no qual cada caractere possui um único valor: 16 bits. Com isso, podemos ter um total de 65.536 símbolos (216). Além do alfabeto e dos símbolos de pontuação, existem códigos para: Símbolos monetários £ ¥ ₣ ₤ € $ Símbolos matemáticos + * / - = Formas geométricas ■ ▭ △ ◯ ◆ ▱ Emojis 😀 😂 😇 😍 😎 😜 Segundo Tanembaum (2007), o consórcio Unicode estuda e decide todas as novas propostas de inclusão de novos caracteres. Quando um usuário digita no teclado a palavra SABER (em letras maiúsculas), por exemplo, seus caracteres são convertidos conforme a tabela a seguir: T3 - M1/M2/M3/M4 22 S A B E RS A B E R ASCII 01010011 01000001 01000010 01000101 Unicode U+0053 U+0041 U+0042 U+0045 Evolução dos caracteres Atualmente, os dispositivos que usamos suportam uma ampla variedade de caracteres especiais. No entanto, se observarmos a evolução dos programas ao longo do tempo, podemos lembrar de problemas de incompatibilidade que ocorriam entre diferentes aplicativos ou relacionados a idiomas diferentes. Essas incompatibilidades surgiam quando não havia padronização ou adaptação adequada às aplicações. Isso afetava tanto a capacidade de explorar negócios de forma eficiente quanto a acessibilidade e usabilidade dos sistemas. É importante ter em mente a importância de promover a maior compatibilidade possível entre conjuntos de caracteres, especialmente se você estiver trabalhando em funções como programador de aplicativos de rede, programador web ou web designer. Garantir essa compatibilidade contribui para melhorar a experiência dos usuários e facilitar o funcionamento correto dos sistemas em diferentes contextos. 🎬 Códigos ASCII e Unicode Você já deve saber que os computadores usam uma linguagem própria, o binário, para se comunicarem. Diferente de nós, seres humanos, que usamos letras, palavras e frases em outros idiomas. No entanto, o objetivo do computador é fornecer informações úteis para nós, humanos. Para isso, é necessário que o computador seja capaz de entender a nossa linguagem. É aí que entram as formas de representação dos dados, como os caracteres. Existem códigos binários que correspondem aos caracteres que usamos. Quando falamos, por exemplo, do tipo de dado "caractere", estamos nos referindo aos códigos binários que representam as letras do alfabeto, que também podem incluir números. Porém, esses números não são utilizados para cálculos, eles são apenas caracteres. Para realizar essa representação dos caracteres, existem as tabelas de representação de dados. Um exemplo de tabela é a ASCII, que é um padrão muito conhecido e possui sete bits. Com isso, é possível representar 128 caracteres. A tabela ASCII é interessante e importante, mas tem suas limitações de representação de caracteres. Devido a essas limitações, foi criado um padrão internacional chamado Unicode, que utiliza 16 bits. Com isso, é possível representar uma gama muito maior de caracteres. Se você fizer o cálculo, verá que o Unicode pode representar mais de 16 mil caracteres diferentes. O Unicode oferece suporte a caracteres de diversos idiomas, incluindo os emojis tão populares nos aplicativos de comunicação. Agora, vamos entender como o computador converte os caracteres em binário. Por exemplo, a letra "A" é representada por um grupo de bits. Para mostrar isso de forma simplificada, vamos usar um exemplo de tabela de representação que mostra os caracteres com seus códigos em hexadecimal. O hexadecimal é bastante utilizado na computação por permitir a representação de uma quantidade maior de bits. No exemplo apresentado, o caractere "C" maiúsculo é representado pelo código 43 em decimal. Para converter esse código em binário, você separa em grupos de quatro bits e atribui o valor correspondente a cada posição na base binária (2 elevado à potência da posição). Depois, soma-se as posições que têm o valor correspondente e isso resulta no código binário. Repetindo o processo para os outros caracteres, obtemos o código binário completo para a palavra "céu". A tabela fictícia que usamos no exemplo mostra que o código 43 representa o caractere "C", o código 45 representa o caractere "é" e o código 55 representa o caractere "u". Portanto, ao juntar esses códigos binários em sequência, obtemos a representação binária para a palavra "céu". Esse foi apenas um exemplo prático para entendermos como o computador converte os caracteres em binário. Cada caractere é representado por um grupo de bits. Espero que tenha ajudado a aprender um pouco mais sobre esse assunto. Considerações Finais Quando estudamos os aspectos mais profundos do computador, conseguimos ter uma compreensão básica de tudo o que acontece, tanto no hardware quanto no software. Ao aprender sobre os sistemas de numeração binário, octal e hexadecimal, podemos entender melhor como os tamanhos dos arquivos são medidos, como as linguagens de programação usam a memória do computador e como os endereços IP em redes de computadores são construídos. T3 - M1/M2/M3/M4 23 Esses conhecimentos nos capacitam a trabalhar em áreas como o desenvolvimento de chips, dispositivos embarcados e automação. Além disso, podemos fazer conexões com outras áreas de estudo, como Engenharia, Eletrônica e Telecomunicações. Compreender os cálculos aritméticos nos dá uma base sólida para explorar essas áreas e realizar projetos e estudos mais avançados. Referências HARRIS, D.; HARRIS, S. Digital design and computer architecture. 2. ed. San Francisco: Morgan Kaufmann, 2012. HENNESSY, J. L. Organização e projeto de computadores: a interface hardware/software. 2. ed. Rio de Janeiro: LTC, 2000. Instituto Nacional de Metrologia, Qualidade e Tecnologia. INMETRO. Resumo do Sistema Internacional de Unidades - SI. Tradução da publicação do BIPM. Consultado em meio eletrônico em: 7 abr. 2020. MONTEIRO, M. Introdução à organização de computadores. 5. ed. Rio de Janeiro: LTC, 2007. MURDOCCA, M. J.; HEURING, V. P. Introdução à arquitetura de computadores. Rio de Janeiro: Campus, 2000. PATTERSON, D. A. et al. Computer architecture, a quantitative approach. 5. ed. San Francisco: Morgan Kaufmann, 2011. PATTERSON, D. A. et al. Organização e projeto de computadores. 2. ed. Rio de Janeiro: LTC, 2000. SEDGEWICK, R.; WAYNE, K. Computer science: an interdisciplinary approach. New York: Pearson Education, 2017. STALLINGS, W. Arquitetura e organização de computadores. 8. ed. São Paulo: Pearson Prentice Hall, 2010. TANEMBAUM, A. S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: LTC, 2007.