6

Click here to load reader

Manuscrito Acm Bits E Bytes

Embed Size (px)

DESCRIPTION

Manuscrito ACM sobre sistemas numéricos e conversões.

Citation preview

Page 1: Manuscrito   Acm Bits E Bytes

Sistemas Numéricos Aléxis Oliveira, Anne Carolline Azevedo, Plínio Eduardo , Tâmara Taxman, Victor Vinícius,

Universidade Federal de Sergipe - Departamento de Computação

Cidade Universitária “Prof. José Aloísio Campos”, Avenida Marechal Rondon, Jardim Rosa Elze

São Cristóvão – SE – Brasil

557921056600

{alexis_sammy, lolabunny_loneytunes, baskett888, tamara_taxman, victorvi0}@hotmail.com

ABSTRACT This document expose what are numerical systems starting with

a brief history of numbers. Then we talk about the initial

concepts of systems numbers, which explain the calculation of

place value and the types of numerical systems. Soon after,

explain about the utilities of the binary system and how it is

related to Boolean algebra. We will show a case study that talk

about the Fundamental Theorem of the Numbers, which explain

the numerical conversions from binary, octal, hexadecimal and

decimal to each one of them. Still at case study, there is table of

representation ASCII and a short comment about BCD,

EBCDIC and UNICODE, with explanation about Supplement

Two. In the end, we talk about operations with binary numbers.

RESUMO O presente trabalho trata em geral sobre sistemas numéricos. E

mais especificamente sobre os conceitos iniciais dos sistemas de

numerações posicionais, passando antes por uma breve

explicação da história dos números. Posteriormente, analisamos

o cálculo do valor posicional e cada tipo de sistema posicional.

A principal utilização desses sistemas está na comunicação entre

usuário e máquina, na qual a linguagem que é utilizada pelo

usuário é convertida em linguagem de máquina. E essa

linguagem de máquina é representada, principalmente, pelo

sistema binário. Há o estudo de caso do Teorema Fundamental

da Numeração, no qual são expostas as conversões de base de

binária, octal, hexadecimal e decimal para cada uma delas.

Ainda no estudo de caso, encontra-se a tabela de representação

ASCII e um breve comentário sobre a BCD, a EBCDIC e a

UNICODE, com explicação sobre complemento de dois. No

final, explicamos sobre operações com números binários.

Palavras-chave

Sistemas Numéricos; Linguagem de Máquina; Conversão de

Base; Informática.

Categories and Subject Descriptors G.1 [Numerical Analysis]

Termos Gerais

Algoritmos, execução, linguagem, teoria.

1. INTRODUÇÃO Sistemas Numéricos são essenciais à vida cotidiana. Usados

largamente por todos, mas especialmente nas ciências exatas,

assim como na informática. Nela sua utilização não se restringe

à simples cálculos para resolução de problemas, sua principal

função está na comunicação entre máquina e usuário, pois

através de conversões numéricas torna-se possível traduzir a

linguagem de máquina (linguagem de baixo nível) para uma

linguagem mais comum (linguagem de alto nível), aquela usada

normalmente para nossa comunicação, comunicação entre

usuários.

Este trabalho será apresentado em 4 seções além da

introdução que se segue com uma breve passagem pelo

histórico. A Seção 2 apresenta os conceitos iniciais dos sistemas

numéricos e os tipos de sistemas posicionais. A Seção 3

apresenta as utilidades desses sistemas e finalmente na Seção 4

nós concluímos e apresentamos os estudos de caso.

1.1 História dos Números Em todas as épocas da evolução humana, mesmo nas mais

atrasadas, encontra-se no homem o sentido do número. O que

lhe permite reconhecer que algo muda em uma pequena coleção

(por exemplo, seus filhos, suas ovelhas) quando, sem seu

conhecimento direto, um objeto tenha sido retirado ou

acrescentado.

Através de uma série de circunstâncias, o homem aprendeu a

completar sua percepção limitada de número e começou a

contar. E a isso, devemos o progresso da humanidade.

2. SISTEMAS DE NUMERAÇOES

POSICIONAIS

Page 2: Manuscrito   Acm Bits E Bytes

2.1 Conceitos iniciais Os sistemas de numeração têm por objetivo prover símbolos e

convenções para representar quantidades.

Em alguns sistemas como no romano os símbolos só possuíam

valor absoluto, sendo chamado de sistemas de numeração não

posicionais.

Em outros, o valor representado depende da posição em que ele

aparece na representação, sendo chamado de sistema de

numeração posicional [3].

2.2 Fórmula para Cálculo do valor Posicional Usamos uma fórmula para calcular o valor de um símbolo dentro

de um determinado número, independentemente do sistema

posicional em questão.

V = S * B ^ P

Onde:

V - Valor posicional do símbolo.

S - Valor absoluto do símbolo.

B - Base do sistema numérico. É a quantidade de símbolos que

dispomos para escrever os números.

P - É a posição em que o símbolo em questão se encontra no

número. Esta posição é definida da direita para esquerda e inicia

em zero.

2.3 Tipos de sistemas posicionais

Existem quatro tipos de sistema posicionais, onde cada um

destes tem suas diferentes bases. Antes de vermos cada tipo de

sistema vamos ver o que é a base de um sistema numérico. A

base de um sistema numérico é a quantidade de elementos que

existe dentro de um sistema posicional, ou seja , aqueles

utilizados para sua representação[2]. Em nossa atual sociedade a

base mais utilizada é a base 10 (decimal) onde contamos com 10

algarismos para representação numérica que são os números 0,

1, 2, 3, 4, 5, 6, 7, 8, 9.

2.3.1 Sistema Decimal

O sistema decimal é provavelmente o sistema numérico

posicional mais antigo que conhecemos. Surgiu na Índia e, aos

poucos, foi substituindo os demais sistemas numéricos

existentes e hoje é quase universal sendo utilizado por todos nós

nas atividades do dia-a-dia [1]. Os circuitos ditos analógicos

processam informações usando o sistema decimal [2]. Este

sistema possui base 10, sendo seus elementos os números de 0 a

9.

2.3.2 Sistema Octal

Este sistema possui base 8, os seus elementos são os algarismos

de 0 à 8. O octal foi muito utilizado em informática como uma

alternativa mais compacta ao binário na programação em

linguagem de máquina. Hoje, o sistema hexadecimal é mais

utilizado como alternativa ao binário[4].

2.3.3 Sistema Hexadecimal

Este tipo de sistema posicional é muito usado em informática,

especialmente em programação assembly. Utiliza-se de 16

elementos, por os elementos do sistema posicional decimal que é

usado para numeração possuir apenas 10 números os elementos

do sistema em questão completa-se com seis letras que são: {A,

B, C, D, E, F.}.

2.3.4 Sistema Binário

Para nós seres humanos o sistema binário tem pouco utilidades

ao contrario de uma maquina, como o computador, que utiliza a

partir deste sistema para interpretar dados usando-se o estado da

corrente elétrica (ligada/desligada, alta/baixa, ou algo parecido).

Utiliza os algoritmos ZERO e UM em sua representação, os

quais correspondem aos estados desligado e ligado,

respectivamente. No sistema binário o valor de seus símbolos

(zero ou um) depende de sua posição, o que significa que este

sistema numérico é um sistema posicional [1]. Por este tipo de

sistema possuir dois elementos faz com que sua base seja dois.

3. UTILIDADES DOS SISTEMAS

NUMERICOS O sistema de numeração decimal é importante por que é

conhecido e compreendido universalmente no caso de

representar quantidades fora de qualquer sistema digital. Um

exemplo seria se você digitar um número com base decimal em

uma calculadora ou computador o circuito interno dessas

máquinas o transforma em binário para depois converter em seu

valor decimal equivalente.

3.1 Utilidades do sistema binário

Como o sistema binário utiliza apenas dois algarismos há uma

maior facilidade na representação dos estados de corrente

elétrica ligada/desligada ou alta/baixa, já que as máquinas

devem possuir precisão de resultados e outro sistema numérico

até então não conseguia ser tão preciso quanto o binário, usando

só zeros e uns, os quais correspondem aos estados desligado e

ligado,respectivamente.Estes sinais elétricos são tensões que

assumem dois diferentes valores: um valor positivo (hoje, nos

PC's, cerca de +3 V - três volts positivos) para representar o

valor binário 1 e um valor aproximado a 0 V (zero volt) para

representar o valor binário 0. Na realidade, estes valores não são

absolutos, e sim faixas de valores, com uma margem de

tolerância (entre +2.5 e +3.5 V, representando o valor binário 1,

e entre 0 e + 0,5 V representando o valor binário 0) [5]. A lógica

que permite aos computadores operar baseados nestes dois

valores é chamada Álgebra de Boole, em homenagem ao

matemático inglês George Boole (1815-1864)[4].

Page 3: Manuscrito   Acm Bits E Bytes

3.1.1 Álgebra Booleana

Álgebra Booleana surgiu a partir da busca de uma linguagem

universal, que tornasse todo pensamento racional em

matemático. Esta linguagem deveria ser transposta do domínio

verbal, que é repleto de ambigüidades, ao domínio da

matemática, que pode definir com precisão as relações entre

objetos ou enunciados. Em 1854, com o ensaio „Uma

Investigação das Leis do Pensamento‟, George Boole concebeu

uma espécie de álgebra, um sistema de símbolos e regras

aplicável a qualquer coisa, desde números e letras a objetos ou

enunciados[6]. Com esse sistema, Boole pode codificar

proposições - isto é, enunciados que se pode provar serem

verdadeiros ou falsos - em linguagem simbólica, e então

manipulá-las quase da mesma maneira como se faz com os

números ordinais.

3.1.2 Operações Básicas da Álgebra Booleana

As três operações mais fundamentais da álgebra são E, OU, e

NÃO. Embora o sistema de Boole inclua muitas outras

operações, essas três são as únicas necessárias para somar,

subtrair, multiplicar e dividir, e, ainda, para comparar símbolos

ou números. Para tanto, Boole introduziu o conceito de portas

lógicas que só processam dois tipos de entidades - verdade ou

falsidade, sim ou não, aberto ou fechado, um ou zero (código

usado no sistema binário). Boole esperava que, despojando os

argumentos lógicos de toda verbosidade, seu sistema se tornaria

muito mais fácil - na verdade, tornaria praticamente infalível - a

obtenção de soluções corretas [6].

4. ESTUDO DE CASO: TEOREMA

FUNDAMENTAL DA NUMERAÇÃO

O Teorema Fundamental da Numeração tem uso bastante

significativo, quando se trata de conversões numéricas para a

base decimal. Utiliza um princípio simples de somatório para

realizar as conversões, assim como veremos a seguir.

4.1 Conversões de base Bem, como falado anteriormente, nós usamos o sistema decimal

para realizar operações, representar quantidades e transmitir

informações. Porém, para o computador, a utilização de outros

sistemas de numeração facilita seu trabalho, além de também

tornar o processamento de suas informações muito mais rápido e

simples. Então, vamos mostrar como converter essas bases

numéricas.

4.1.1 Conversões de Binário/Octal e

Hexadecimal para Decimal Para esse tipo de conversão, utiliza-se o Teorema Fundamental

da Numeração (TFN):

n -1

N(b) = Σ d(i) x b(i) -m

No qual:

N = número que será convertido para a base decimal ;

d = cada algarismo do número representado na base

decimal que será convertido;

b = base atual do número;

i = índice do algarismo ou expoente da base b;

m = quantidade de algarismos à direita da vírgula;

n = quantidade de algarismos à esquerda da vírgula.

A partir de um número na base binária, por exemplo, cada

algarismo (já convertido para a base decimal) é multiplicado

pela sua base anterior elevada ao índice de cada algarismo do

número, e somado às outras multiplicações, o resultado dessa

soma será o número convertido na base decimal.

No caso do exemplo citado:

1³1²0¹0 2 = 1 x 2³ + 1 x 2² + 0 x 2¹

Então, para cada conversão para a base decimal, muda apenas a

base do número que será convertido, utilizando o mesmo

princípio de multiplicação e soma.

4.1.2 Conversões de Decimal para

Binário/Octal e Hexadecimal Nas conversões da base 10 para as bases 2, 8 e 16, utiliza-se o

mesmo método, tanto para a parte inteira, como para a parte

fracionária.

-Parte Inteira: São feitas divisões sucessivas pela base até que o

quociente seja zero (0) (ou o dividendo menor que o divisor),

tomando-se os restos na ordem inversa.

-Parte Fracionária: Toma-se a parte fracionária e efetua-se

multiplicações sucessivas pela base, até que o seu valor venha a

ser zero(0) (ou atingir a precisão desejada), resguardando-se as

partes inteiras na ordem normal.

4.1.3 Conversões entre Binário, Octal e

Hexadecimal

As conversões mais simples são as que envolvem bases que são

potências entre si. Vamos exemplificar com a conversão entre a

base 2 e a base 8. Como 23 = 8, separando os bits de um número

binário em grupos de três bits (começando sempre da direita

para a esquerda!) e convertendo cada grupo de três bits para seu

equivalente em octal, teremos a representação do número em

octal [13].

Então, como no caso da conversão de octal para binário, e vice-

versa, basta agrupar o número binário de três em três algarismos,

na conversão de hexadecimal para binário, e vice-versa, o

agrupamento é feito de quatro em quatro, já que 2^4 = 16, a

Page 4: Manuscrito   Acm Bits E Bytes

separação de bits é feita em grupos de quatro bits(também

começando da direita para a esquerda, e caso faltem algarismos

para agrupar, completa-se com zeros à esquerda do número, em

ambos os casos, tanto no octal, quanto no hexadecimal).

4.2 Tabelas de Representação Para manter a comunicação entre usuário-máquina é necessário

intermediar esse processo. Tanto na passagem de informação do

usuário para a máquina, quanto no processo inverso, utilizam-se

tabelas de conversão, nas quais símbolos usados pelo

computador equivalem a outros símbolos usados pelos usuários.

Dentre elas, as mais conhecidas são:

Uni código.UNICODE

Código padrão americano para o intercâmbio de informações.ASCII

Código ampliado de caracteres decimais codificados em binários para o

intercâmbio de dados.

EBCDIC

Números decimais codificados em binários.BCD

Uni código.UNICODE

Código padrão americano para o intercâmbio de informações.ASCII

Código ampliado de caracteres decimais codificados em binários para o

intercâmbio de dados.

EBCDIC

Números decimais codificados em binários.BCD

Figura 1 – Tabelas de Representação

4.2.1 Tabela ASCII

ASCII (para American Standard Code for Information

Interchange, que em português significa "Código Padrão

Americano para o Intercâmbio de Informação") .

ASCII é uma padronização da indústria de computadores, onde

cada carácter é manipulado na memória sob forma de código

binário. O código ASCII é formado por todas as combinações

possíveis de 8 bits, 2^8 = 256 combinações.

Nas duas figuras que seguem há a junção da tabela ASCII

Normal (32 a 127), tabela dos Caracteres Controle (0 a 31) e a

tabela ASCII Estendida (128 a 255) [12].

8 bits = 1Byte =1 caractere

Figura 2: Tabela ASCII – Parte I [10]

Figura 3: Tabela ASCII – Parte II [11]

4.2.3 - Complemento para dois

É o sistema mais usado para representação de números inteiros

com sinal nos computadores modernos.

O dígito mais significativo, à esquerda do número, é o que

informa seu sinal. Se este dígito for zero (0) o número é positivo

e se for um (1) é negativo.

Pela definição, só existe uma representação para o zero e ela é

0000...0.

Para obtermos o complemento de 2 de um número binário,

precisamos inicialmente converter o número em seu

complemento de 1,que obtém-se trocando cada bit pelo seu

complemento (01 e 1 0).

A seguir, soma-se 1 ao complemento de 1, obtendo assim o

complemento de 2.

Vamos exemplificar obtendo os complementos de 2 dos

números binários abaixo:

Page 5: Manuscrito   Acm Bits E Bytes

Equivale a “2” (dois) em decimal

Valor do algarismo após empréstimo

Multiplicador com valor ultrapassando

duas casas

binário Compl. de 1 Compl. de 2

10001001 01110110 01110111

00111100 11000011 11000100

Devemos observar que devido ao seu emprego em hardware os

números binários são representados sempre com um número fixo

de 08 bits.

A conversão inversa, ou seja, de um número em representação

complemento de 2 para a notação binária original é feita

obtendo-se novamente o seu complemento de 2.

4.3 Operações com Números Binários

As operações aritméticas também estão presentes no sistema

binário e não se diferenciam muito das operações aritméticas no

sistema decimal.

4.3.1 Adição

A Adição no sistema binário é realizada da mesma forma que

uma adição no sistema decimal possuindo dois ou mais fatores,

que são os operandos, e a soma que é o resultado da adição

desses fatores. O numero “0” (zero) na adição é um numero

neutro, ou seja, qualquer numero somado a “0” (zero)o resultado

será o próprio número. Como no sistema binário nós temos

apenas dois dígitos, os possíveis casos são:

Fator 1 - a) 0 b) 0 c) 1 d) 1 e) 1 - Fator 1

Fator 2 - +0 +1 +0 +1 + 1 - Fator 2

Soma - 0 1 1 10 1 - Fator 3

11 - Soma

No caso “d” o resultado será “10” porque irá acontecer um

transporte. Usando a regra do “vai a um” da adição o resultado

da soma do caso “d” é igual a “0”(zero) e “vai a um”[8]. Como

não há outros números para serem somados, o numero “1”(um)

,que foi para acima da próxima casa, desce e assim a conta se

encerra resultando “10” (dez).

No caso “e” o resultado será “11” seguindo o mesmo motivo do

caso “d”. Usando a regra do “vai a um” da adição o resultado da

soma do caso “e” é igual a “1”(um) e “vai a um”. Como não há

outros números para serem somados, o numero “1”(um) ,que foi

para acima da próxima casa, desce e assim a conta se encerra

resultando “11” (onze).

4.3.2 Subtração

A Subtração no sistema binário é realizada da mesma forma que

uma subtração no sistema decimal possuindo o minuendo e o

subtraendo que são os operandos, e a diferença que é o resultado

da retirada do valor do subtraendo em cima do valor do

minuendo. O número “0” (zero) na subtração é um número

neutro, ou seja, qualquer número que dele seja retirado “0”

(zero) resultará no próprio número. Os possíveis casos são:

Minuendo - a) 0 b) 1 c) 1

Subtraendo - -0 -0 -1

Diferença - 0 1 0

Além desses, há um caso especial quando o minuendo é menor

que o subtraendo. Nesse tipo de caso, nós usaremos a regra do

“pegar emprestado”, onde o minuendo irá pegar “1” (um)

emprestado do seu vizinho da esquerda.

0 1

1110

- 1001

0101

4.3.3 Multiplicação

A Multiplicação no sistema binário é realizada analogamente a

uma multiplicação no sistema decimal. Na sua forma mais

simples a multiplicação é uma forma rápida de se adicionar uma

quantidade finita de números iguais a um valor. O resultado da

multiplicação de dois números é chamado produto. Os números

sendo multiplicados são chamados de coeficientes ou operandos,

e individualmente de multiplicando e multiplicador. Os

possíveis casos [9] são:

Multiplicando - a) 0 b) 0 c) 1 d) 1

Multiplicador - x0 x1 x0 x1

Produto - 0 0 0 1

Segue um exemplo de multiplicação binária:

11110

x 11

11110

+11110

111100

Como dito antes, a multiplicação no sistema binário ocorre de

maneira igual à multiplicação do sistema decimal. Primeiro

ocorre a multiplicação do multiplicando pelo multiplicador, e

em seguida faz-se a soma binária dos resultados obtidos (caso o

multiplicador possua um valor que ultrapasse duas casas).

5. CONCLUSÃO

Este trabalho expôs de maneira simples e objetiva os diferentes

tipos de sistemas posicionais, destacando aquele que sem dúvida

é um dos mais importantes para a programação, o sistema

binário. A utilização deste se dá em praticamente todas as ações

do computador, desde simplesmente digitar um caractere até a

codificação e o armazenamento da informação.

A essencialidade desse sistema se deve, sobretudo, a sua

associação com a lógica de Boole, que possibilitou sua

utilização nos circuitos eletrônicos.

Page 6: Manuscrito   Acm Bits E Bytes

Hoje, da forma como a codificação binária está concatenada à

computação, dificilmente um outro sistema numérico terá a

capacidade de substituí-lo completamente.

6. REFERÊNCIAS

[1Daniel Pereira Guimarães. Tipos de sistemas posicionais.

Disponível em http://www.tecnobyte.com.br/sisnum1.htm.

Acessado em 08 de Maio de 2008.

[2] Prof. Luiz Marcelo Chiesse da Silva. Base do sistema

posicional. Disponível em

http://www.cp.utfpr.edu.br/chiesse/Sistemas_Digitais/Sistemas_

Num.pdf , Acessado em 6 de Maio de 2008.

[3] Wikiversidade. Lógica Digital/Sistemas Numéricos.

Disponível em

http://pt.wikiversity.org/wiki/L%C3%B3gica_Digital/Sistemas_

num%C3%A9ricos, Acessado em 16 de maio de 2008;

[4] Wikipedia.Sistama octal, utilidades. Disponível em. http://pt.wikipedia.org/wiki/Sistema_octal, Acessado em 28 de

Junho de 2008;

[5].Professor Rui Mano.PUC-Rio, Curso de Tecnólogos em

Processamento de Dados - Organização de Computadores.

Sistemas de Numeração . Disponível em

http://wwwusers.rdc.puc-rio.br/rmano/comp5cb.html. Acessado

em 25 de abril de 2008;

[6] William 2000. Base Binária e álgebra de BOOLE – Um

pouco de história... Bit @ Bit – Ensino a Distância. Disponível

em http://200.19.92.57/wschui/goodbit/BOOLEK.html.

Acessado em 03 de maio de 2008;

[7] José Luís Güntzel e Francisco Assis do Nascimento.

Introdução aos Sistemas Digitais (v. 2001/1). Disponível em

http://minerva.ufpel.edu.br/~guntzel/isd/isd2.pdf. Acessado em

05 de maio de 2008;

[8] Nebjsa Matic, traduzido porAlberto Jerônimo. Sistemas

Numéricos. The Pic microcontroller Book 1 -

Microcontroladores PIC on-line. Disponível em

http://www.mikroe.com/pt/product/books/picbook/ap_b.htm,

Acessado em 26 de abril de 2008;

[9] . Professor Carlos Felgueiras. Operações binárias.

Disponível em

www.carlosfelgueiras.hpg.ig.com.br/Cursos/SistemasDigitais/O

peracoesBinarias.ppt. Atualizado em janeiro de 2002 .Acessado

em 21 de Junho de 2008;

[10] Figura 2 - Tabela ASCII – parte 01. Disponível em

http://www.cdrummond.qc.ca/cegep/informat/Professeurs/Alain/

files/ascii.htm. Acessado em 10 de maio de 2008;

[11] Figura 3 - Tabela ASCII – parte 02. Disponível em

http://www.computerhope.com/jargon/a/ascii.htm. Acessado em

10 de maio de 2008;

[12] Tabela ASCII Completa - Spectrum.eti. João Paulo

Franqueto. Atualizado em 18 de março de 2007. Disponível em

http://www.spectrum.eti.br/news/tabela_ascii_completa.

Acessado em 17 de maio de 2008;

[13] Professor Rui Mano. PUC – Rio. Sistemas de Numeração.,

Curso de Tecnólogos em Processamento de Dados -

Organização de Computadores. Disponível em

http://wwwusers.rdc.puc-rio.br/rmano/sn2cvb.html. Atualizado

em 06 de agosto de 1998. Acessado em 01 de maio de 2008;