SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
AC − Arquitetura de Computadores

    Aula 2 − Representação de Números

                              2001
                    Mário O. de Menezes


             http://www.tf.ipen.br/~mario
  AC − Repres. Números   p.                     Mario   2001
  1




Sumário

° Representação do computador das quot;Coisasquot;
° Números sem sinal Unsigned
° Computadores trabalhando
° Números com sinal Signed: busca por uma boa
  representação
° Atalhos
° Conclusão




  AC − Repres. Números   p.                     Mario   2001
  2
O que os computadores fazem?




° Computadores manipulam representações de
  coisas!
° O que se pode representar com N bits?
     2N coisas!
    




° Quais coisas?
    




     Números! Caracteres! Pixels! Dolars!
     Posição! Instrucões! ...
    




     Depende de quais operações se faz sobre eles
  AC − Repres. Números   p.                         Mario   2001
  3




Números Decimais: Base 10

° Digitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

° Exemplo:
3271 =
(3x103) + (2x102) + (7x101) + (1x100)




  AC − Repres. Números   p.                         Mario   2001
  4
Números: notação posicional
° Número Base B => B símbolos por dígito:
    




        Base 10 (Decimal): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
        Base 2 (Binário):        0, 1
° Representação do Número:
    




        d31d30 ... d2d1d0 é um número de 32 dígitos
    




        valor = d31x B31 + d30 x B30 + ... + d2 x B2 + d1 x B1 + d0 x B0

° Binário:         0,1

        1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x1 = 64 + 16
    




        + 8 + 2 = 90
    




        Note que um número binário de 7 dígitos se transforma em um
        número decimal de 2 dígitos.
    




        Existe uma base que converte facilmente para números binários?
       AC − Repres. Números   p.                               Mario   2001
       5




  Números Hexadecimais: Base 16
       ° Hexadecimal:
         0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F
            




               Dígitos Normais + 6 mais: tomados do alfabeto
       ° Conversão: Binário <−> Hex
            




            1 dígito hex representa 16 valores decimais
            




            4 dígitos binários representam 16 valores decimal
          => 1 dígito hex substituti 4 dígitos binários
       ° Exemplos:
            




               1010 1100 0101 (binary) = ? (hex)
            




               10111 (binary) = 0001 0111 (binary) = ?
            




               3F9(hex) = ? (binary)



       AC − Repres. Números   p.                               Mario   2001
       6
Decimal vs. Hexadecimal vs.Binário
                                    00   0       0000
♦Exemplos:                          01   1       0001
♦1010 1100 0101 (binary)            02   2       0010
= AC5 (hex)                         03   3       0011
                                    04   4       0100
                                    05   5       0101
♦10111 (binary)                     06   6       0110
= 0001 0111 (binary)                07   7       0111
= 17 (hex)                          08   8       1000
                                    09   9       1001
                                    10   A       1010
♦3F9(hex)                           11   B       1011
= 11 1111 1001 (binary)
                                    12   C       1100
                                    13   D       1101
                                    14   E       1110
                                    15   F       1111

  AC − Repres. Números   p.                                 Mario   2001
  7




O que fazer com as representações
de números?
° Exatamente o que fazemos com números!
   • Somá−los                        1 1
   • Subtraí−los
                                     1 0          1     0
   • Multiplicá−los
   • Dividi−los                 +    0       1    1     1
   • Compará−los                −−−−−−−−−−−−−−−−
° Exemplo:       10 + 7 = 17
                                1    0       0    0     1
   • Tão simples somar em binário que podemos
     fazer circuitos para fazê−lo
   • Subtração também exatamente como se faz em
     decimal


  AC − Repres. Números   p.                                 Mario   2001
  8
Comparação
° Como dizer se X > Y?
° Veja se X− Y > 0




  AC − Repres. Números   p.                           Mario   2001
  9




Qual base nós utilizamos?
° Decimal: bom para humanos, especialmente para
  fazer aritmética
° Hex: ao olhar para uma string longa de números
  binários, é muito mais fácil converter para hex e
  olhar 4 bits/símbolo
    




     Terrível para aritmética; just say no
° Binário: o que computadores usam;
  aprender como os computadores fazem +,−,*,/
    




     Para um computador, números sempre binários
    




       Não importa como o número é escrito:
                3210 == 0x20 == 1000002
                              ¡   ¢   ¡   ¢   ¡   ¢




    




       Use subscritos dez , hex , dois no texto,
       slides, etc quando puder confundir


  AC − Repres. Números   p.                           Mario   2001
  10
Limites dos Números do Computador
° Bits podem representar qualquer coisa!
° Caracteres?
    




     26 letras => 5 bits
    




     maisc./minusc. + pontuação
                              ¡   ¢




     => 7 bits (em 8) ( ascii )
    




     Código padrão para atender todas as
     linguagens do mundo => 16 bits (unicode)
° Valores lógicos?
    




     0 −> Falso, 1 => Verdadeiro
° cores ?
° localizações / endereços? comandos?
° Mas N bits => somente 2N coisas


  AC − Repres. Números   p.                           Mario   2001
  11




Como representar números negativos?
° Até agora, números sem sinal unsigned
° Solução óbvia: definir o bit mais à esquerda para
  ser o sinal!
    




      0 => +, 1 => −
    




      Resto dos bits podem ser valores numéricos do
      número
° Representação chamada sign and magnitude
° MIPS usa inteiros de 32−bit +1dez seria:
0000 0000 0000 0000 0000 0000 0000 0001
° E − 1dez em sign and magnitude would be:
1000 0000 0000 0000 0000 0000 0000 0001



  AC − Repres. Números   p.                           Mario   2001
  12
Problemas da sign and magnitude?

 ° Circuito Aritmético mais complicado
      




       Passos especiais dependendo se os sinais são
       os mesmos ou não


 ° Ainda, dois zeros
      




       0x00000000 = +0dez
      




         0x80000000 = −0dez
      




         O que significaria para a programação?
 ° Sign and magnitude abandonada




   AC − Repres. Números   p.                                Mario   2001
   13




 Outra tentativa: complementar os bits
 ° Exemplo:       710 = 001112          −710 = 110002
 ° Chamada complemento de um
 ° Nota: números positivos tem 0s na frente, números
   negativos tem 1s.


                               00000   00001 ...    01111

   10000 ... 11110 11111

° O que é −00000 ?
° Quantos números positivos em N bits?
° Quantos negativos?


   AC − Repres. Números   p.                                Mario   2001
   14
Problemas do complemento de um
 ° Aritmética não muito difícil


 ° Ainda dois zeros
     




       0x00000000 = +0dez
     




        0xFFFFFFFF = −0dez
     




        O que significaria para a programação?
 ° Complemento de um abandonado porque outra
   solução foi melhor




   AC − Repres. Números       p.                                         Mario   2001
   15




Busca por Representação do Número Negativo
 ♦Qual é o resultado para números sem sinal se tentamos subtrair
  um número grande de um pequeno?
   • Tentaria pegar da string de 0s da frente de modo que o
     resultado seria uma string de 1s na frente
         − 3 − 4 =>                £    0011 −   £   0100 =   £   1111
   • Na falta de uma alternativa melhor, escolher a representação
     que faz o hardware simples.
   • Como com o complemento de um, 0s a frente ⇒ positivo,
     1s a frente ⇒ negativo
         − 000000...xxx é >=0, 111111...xxx é < 0
         − exceto         £            1111 é −1 não zero
 ♦Complemento de dois


   AC − Repres. Números       p.                                         Mario   2001
   16
¤




    quot;Linhaquot; dos Números Complemento de 2 s
                00000 00001
        11111
    11110                00010                    ° 2 N−1 não negativos
               −1 0 1
  11101     −2         2                          ° 2 N−1 negativos
 11100    −3                                      ° um zero
         −4
     .                       .                    ° Quantos positivos?
     .                       .                    ° Overflow?
     .                       .

                    −15−16 15
             10001 10000 01111


       AC − Repres. Números   p.                                     Mario   2001
       17




     Complemento de Dois
 0000 ... 0000     0000 0000 0000dois =                       0dez
 0000 ... 0000     0000 0000 0001dois =                       1dez
 0000 ... 0000     0000 0000 0010dois =                       2dez
 ...
 0111 ... 1111     1111       1111   1101dois = 2,147,483,645dez
 0111 ... 1111     1111       1111   1110dois = 2,147,483,646dez
 0111 ... 1111     1111       1111   1111dois = 2,147,483,647dez
 1000 ... 0000     0000       0000   0000dois = −2,147,483,648dez
 1000 ... 0000     0000       0000   0001dois = −2,147,483,647dez
 1000 ... 0000     0000       0000   0010dois = −2,147,483,646dez
 ...
 1111 ... 1111     1111 1111 1101dois =                       −3dez
 1111 ... 1111     1111 1111 1110dois =                       −2dez
 1111 ... 1111     1111 1111 1111dois =                       −1dez
                                                         ¡       ¢




° Um zero, 1° bit chamado bit de sinal , um negavito extra , não há
 2,147,483,648dez p.
     AC − Repres. Números                                            Mario   2001
       18
Fórmula do Complemento de Dois
  ° Pode representar números positivos e negativos em termos
    do valor do bit vez uma potência de 2:
       d31 x −231 + d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20
                




  ° Exemplo
          1111 1111 1111 1111 1111 1111 1111 1100dois
  = 1x−231 +1x230 +1x229+... +1x22+0x21+0x20
  = −231 + 230 + 229 + ... + 22 + 0 + 0
  = −2,147,483,648dez + 2,147,483,644dez
  = −4dez
  ° Nota: deve−se especificar a largura: nós usamos 32 bits




              AC − Repres. Números   p.                        Mario   2001
              19




  Atalho do complemento de dois: Negação
° Inverter cada 0 para 1 e cada 1 para 0, então somar 1 ao resultado
           




               Soma de um número seu complemento de um deve ser
               111...111dois
           




               111...111dois= −1dez
                       ¥




           




               Seja x a representação invertida de x
               Então x + x = −1 ⇒ x + x + 1 = 0 ⇒ x + 1 = −x
                              ¥           ¥        ¥




           




° Exemplo: −4 para +4 para −4
  x : 1111 1111 1111 1111 1111 1111 1111 1100dois
  x : 0000 0000 0000 0000 0000 0000 0000 0011dois
  ¥




  +1: 0000 0000 0000 0000 0000 0000 0000 0100dois
  () : 1111 1111 1111 1111 1111 1111 1111 1011dois
      ¥




  +1: 1111 1111 1111 1111 1111 1111 1111 1100dois


              AC − Repres. Números   p.                        Mario   2001
              20
Atalho do compl. de dois: extensão do sinal
♦ Converter número em complemento de 2 usando n bits
  para mais de n bits
♦ Simplesmente repetir o bit mais significante (bit de sinal)
  do menor para preencher os novos bits
   •Complemento de 2 positivo tem infinitos 0s
   •Complemento de 2 negativo tem infinitos 1s.
   •Representação de bit esconde os bits a frente;
   extensão de sinal restaura alguns deles
   •16−bit −4dez para 32−bit:
                                    1111 1111 1111 1100dois
   1111 1111 1111 1111 1111 1111 1111 1100dois

  AC − Repres. Números   p.                                   Mario   2001
  21




Números com Sinal vs. Números sem Sinal
° Declaração C int
    




     Declara um número com sinal
    




     Usa complemento de dois
° Declaração C unsigned int
    




     Declara um número sem sinal
    




     Trata números 32 bits como inteiros sem sinal, de modo que o
     bit mais significante é parte do número, não um bit de sinal

° X = 1111 1111 1111 1111 1111 1111 1111 1100dois

° Y = 0011 1011 1001 1010 1000 1010 0000 0000dois
° É X > Y?
    




       Sem sinal:             SIM
    




       Com sinal:             NãO
  AC − Repres. Números   p.                                   Mario   2001
  22
Números são armazenados em endereços
                    00000       ° Memória é um lugar para
                                  armazenar bits
                                ° Uma palavra é um número fixo
  101101100110      01110
                                  de bits (e.g., 32) em um
                                  endereço.
                                ° Endereços são naturalmente
                                  representados como número
                                  sem sinal
                   11111 = 2k − 1




  AC − Repres. Números   p.                              Mario   2001
  23




E se o número for muito grande?
° Os padrões de bits acima são apenas representações de
  números
° Os números realmente tem um número infinito de dígitos
  • Com quase todos sendo os mesmos exceto por alguns
    poucos mais à direita
  • Simplesmente não mostre normalmente os dígitos à
    frente
° Se o resultado de somar (−, *, /) não pode ser
  representado por estes bits de HW mais à direita,
  acontece o que é conhecido como overflow


00000        00001            00010              11110   11111
                                      unsigned

  AC − Repres. Números   p.                              Mario   2001
  24
Conclusão
° Nós representamos quot;coisasquot; no computador como
  padrões particulares de bits: N bits =>2N
    




     números, caracteres, ...
° Decimal para cálculos humanos, binário para
  entender computadores, hex para entender binário
° Complemento de 2 é universal em computação: não
  pode ser evitado, então aprenda
° Operações no Computador sobre as
  representações de números correspondem as
  operações reais sobre as coisas reais.
° Overflow: números são infinitos mas os
  computadores são finitos, assim erros podem
  ocorrer



  AC − Repres. Números   p.                          Mario   2001
  25

Más contenido relacionado

Destacado

Assembling wall panels with robotic technologies
Assembling wall panels with robotic technologiesAssembling wall panels with robotic technologies
Assembling wall panels with robotic technologieselliando dias
 
Model-Driven Software Development
Model-Driven Software DevelopmentModel-Driven Software Development
Model-Driven Software Developmentelliando dias
 
Scrum in five minutes
Scrum in five minutesScrum in five minutes
Scrum in five minuteselliando dias
 
Interfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIInterfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIelliando dias
 
hardware de um sistema de computação
hardware de um sistema de computaçãohardware de um sistema de computação
hardware de um sistema de computaçãoelliando dias
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Languageelliando dias
 
Linguagens de Transformação de Modelos
Linguagens de Transformação de ModelosLinguagens de Transformação de Modelos
Linguagens de Transformação de Modeloselliando dias
 
Cruzadinha Matemática 07
Cruzadinha Matemática 07Cruzadinha Matemática 07
Cruzadinha Matemática 07Prof. Materaldo
 
UML-Based Web Engineering
UML-Based Web EngineeringUML-Based Web Engineering
UML-Based Web Engineeringelliando dias
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistemaelliando dias
 
Banco De Dados Básico
Banco De Dados BásicoBanco De Dados Básico
Banco De Dados Básicoelliando dias
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Introduction to ROBOTICS
Introduction to ROBOTICSIntroduction to ROBOTICS
Introduction to ROBOTICSelliando dias
 

Destacado (17)

Algoritmo Genetico
Algoritmo GeneticoAlgoritmo Genetico
Algoritmo Genetico
 
Assembling wall panels with robotic technologies
Assembling wall panels with robotic technologiesAssembling wall panels with robotic technologies
Assembling wall panels with robotic technologies
 
Model-Driven Software Development
Model-Driven Software DevelopmentModel-Driven Software Development
Model-Driven Software Development
 
Acme Total
Acme TotalAcme Total
Acme Total
 
Scrum in five minutes
Scrum in five minutesScrum in five minutes
Scrum in five minutes
 
Interfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIInterfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUI
 
hardware de um sistema de computação
hardware de um sistema de computaçãohardware de um sistema de computação
hardware de um sistema de computação
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Language
 
Linguagens de Transformação de Modelos
Linguagens de Transformação de ModelosLinguagens de Transformação de Modelos
Linguagens de Transformação de Modelos
 
Diferentes situações para resolver
Diferentes situações para resolverDiferentes situações para resolver
Diferentes situações para resolver
 
Cruzadinha Matemática 07
Cruzadinha Matemática 07Cruzadinha Matemática 07
Cruzadinha Matemática 07
 
Robótica Móvel
Robótica MóvelRobótica Móvel
Robótica Móvel
 
UML-Based Web Engineering
UML-Based Web EngineeringUML-Based Web Engineering
UML-Based Web Engineering
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistema
 
Banco De Dados Básico
Banco De Dados BásicoBanco De Dados Básico
Banco De Dados Básico
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Introduction to ROBOTICS
Introduction to ROBOTICSIntroduction to ROBOTICS
Introduction to ROBOTICS
 

Similar a Representação de Números

Similar a Representação de Números (8)

CADERNO DO FUTURO - MAT - 7° ANO.pdf
CADERNO DO FUTURO - MAT - 7° ANO.pdfCADERNO DO FUTURO - MAT - 7° ANO.pdf
CADERNO DO FUTURO - MAT - 7° ANO.pdf
 
Interligados Apresentação 1
Interligados   Apresentação 1Interligados   Apresentação 1
Interligados Apresentação 1
 
Organização de computadores
Organização de computadoresOrganização de computadores
Organização de computadores
 
Sistema conversões
Sistema conversõesSistema conversões
Sistema conversões
 
Listão 7º ano
Listão 7º anoListão 7º ano
Listão 7º ano
 
Sistemas de numeração
Sistemas de numeraçãoSistemas de numeração
Sistemas de numeração
 
Tp representação de informação
Tp   representação de informaçãoTp   representação de informação
Tp representação de informação
 
Sistemas de numeração
Sistemas de numeraçãoSistemas de numeração
Sistemas de numeração
 

Más de elliando dias

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 

Más de elliando dias (20)

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 

Representação de Números

  • 1. AC − Arquitetura de Computadores Aula 2 − Representação de Números 2001 Mário O. de Menezes http://www.tf.ipen.br/~mario AC − Repres. Números p. Mario 2001 1 Sumário ° Representação do computador das quot;Coisasquot; ° Números sem sinal Unsigned ° Computadores trabalhando ° Números com sinal Signed: busca por uma boa representação ° Atalhos ° Conclusão AC − Repres. Números p. Mario 2001 2
  • 2. O que os computadores fazem? ° Computadores manipulam representações de coisas! ° O que se pode representar com N bits? 2N coisas!   ° Quais coisas?   Números! Caracteres! Pixels! Dolars! Posição! Instrucões! ...   Depende de quais operações se faz sobre eles AC − Repres. Números p. Mario 2001 3 Números Decimais: Base 10 ° Digitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ° Exemplo: 3271 = (3x103) + (2x102) + (7x101) + (1x100) AC − Repres. Números p. Mario 2001 4
  • 3. Números: notação posicional ° Número Base B => B símbolos por dígito:   Base 10 (Decimal): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 2 (Binário): 0, 1 ° Representação do Número:   d31d30 ... d2d1d0 é um número de 32 dígitos   valor = d31x B31 + d30 x B30 + ... + d2 x B2 + d1 x B1 + d0 x B0 ° Binário: 0,1 1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x1 = 64 + 16   + 8 + 2 = 90   Note que um número binário de 7 dígitos se transforma em um número decimal de 2 dígitos.   Existe uma base que converte facilmente para números binários? AC − Repres. Números p. Mario 2001 5 Números Hexadecimais: Base 16 ° Hexadecimal: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F   Dígitos Normais + 6 mais: tomados do alfabeto ° Conversão: Binário <−> Hex   1 dígito hex representa 16 valores decimais   4 dígitos binários representam 16 valores decimal => 1 dígito hex substituti 4 dígitos binários ° Exemplos:   1010 1100 0101 (binary) = ? (hex)   10111 (binary) = 0001 0111 (binary) = ?   3F9(hex) = ? (binary) AC − Repres. Números p. Mario 2001 6
  • 4. Decimal vs. Hexadecimal vs.Binário 00 0 0000 ♦Exemplos: 01 1 0001 ♦1010 1100 0101 (binary) 02 2 0010 = AC5 (hex) 03 3 0011 04 4 0100 05 5 0101 ♦10111 (binary) 06 6 0110 = 0001 0111 (binary) 07 7 0111 = 17 (hex) 08 8 1000 09 9 1001 10 A 1010 ♦3F9(hex) 11 B 1011 = 11 1111 1001 (binary) 12 C 1100 13 D 1101 14 E 1110 15 F 1111 AC − Repres. Números p. Mario 2001 7 O que fazer com as representações de números? ° Exatamente o que fazemos com números! • Somá−los 1 1 • Subtraí−los 1 0 1 0 • Multiplicá−los • Dividi−los + 0 1 1 1 • Compará−los −−−−−−−−−−−−−−−− ° Exemplo: 10 + 7 = 17 1 0 0 0 1 • Tão simples somar em binário que podemos fazer circuitos para fazê−lo • Subtração também exatamente como se faz em decimal AC − Repres. Números p. Mario 2001 8
  • 5. Comparação ° Como dizer se X > Y? ° Veja se X− Y > 0 AC − Repres. Números p. Mario 2001 9 Qual base nós utilizamos? ° Decimal: bom para humanos, especialmente para fazer aritmética ° Hex: ao olhar para uma string longa de números binários, é muito mais fácil converter para hex e olhar 4 bits/símbolo   Terrível para aritmética; just say no ° Binário: o que computadores usam; aprender como os computadores fazem +,−,*,/   Para um computador, números sempre binários   Não importa como o número é escrito: 3210 == 0x20 == 1000002 ¡ ¢ ¡ ¢ ¡ ¢   Use subscritos dez , hex , dois no texto, slides, etc quando puder confundir AC − Repres. Números p. Mario 2001 10
  • 6. Limites dos Números do Computador ° Bits podem representar qualquer coisa! ° Caracteres?   26 letras => 5 bits   maisc./minusc. + pontuação ¡ ¢ => 7 bits (em 8) ( ascii )   Código padrão para atender todas as linguagens do mundo => 16 bits (unicode) ° Valores lógicos?   0 −> Falso, 1 => Verdadeiro ° cores ? ° localizações / endereços? comandos? ° Mas N bits => somente 2N coisas AC − Repres. Números p. Mario 2001 11 Como representar números negativos? ° Até agora, números sem sinal unsigned ° Solução óbvia: definir o bit mais à esquerda para ser o sinal!   0 => +, 1 => −   Resto dos bits podem ser valores numéricos do número ° Representação chamada sign and magnitude ° MIPS usa inteiros de 32−bit +1dez seria: 0000 0000 0000 0000 0000 0000 0000 0001 ° E − 1dez em sign and magnitude would be: 1000 0000 0000 0000 0000 0000 0000 0001 AC − Repres. Números p. Mario 2001 12
  • 7. Problemas da sign and magnitude? ° Circuito Aritmético mais complicado   Passos especiais dependendo se os sinais são os mesmos ou não ° Ainda, dois zeros   0x00000000 = +0dez   0x80000000 = −0dez   O que significaria para a programação? ° Sign and magnitude abandonada AC − Repres. Números p. Mario 2001 13 Outra tentativa: complementar os bits ° Exemplo: 710 = 001112 −710 = 110002 ° Chamada complemento de um ° Nota: números positivos tem 0s na frente, números negativos tem 1s. 00000 00001 ... 01111 10000 ... 11110 11111 ° O que é −00000 ? ° Quantos números positivos em N bits? ° Quantos negativos? AC − Repres. Números p. Mario 2001 14
  • 8. Problemas do complemento de um ° Aritmética não muito difícil ° Ainda dois zeros   0x00000000 = +0dez   0xFFFFFFFF = −0dez   O que significaria para a programação? ° Complemento de um abandonado porque outra solução foi melhor AC − Repres. Números p. Mario 2001 15 Busca por Representação do Número Negativo ♦Qual é o resultado para números sem sinal se tentamos subtrair um número grande de um pequeno? • Tentaria pegar da string de 0s da frente de modo que o resultado seria uma string de 1s na frente − 3 − 4 => £ 0011 − £ 0100 = £ 1111 • Na falta de uma alternativa melhor, escolher a representação que faz o hardware simples. • Como com o complemento de um, 0s a frente ⇒ positivo, 1s a frente ⇒ negativo − 000000...xxx é >=0, 111111...xxx é < 0 − exceto £ 1111 é −1 não zero ♦Complemento de dois AC − Repres. Números p. Mario 2001 16
  • 9. ¤ quot;Linhaquot; dos Números Complemento de 2 s 00000 00001 11111 11110 00010 ° 2 N−1 não negativos −1 0 1 11101 −2 2 ° 2 N−1 negativos 11100 −3 ° um zero −4 . . ° Quantos positivos? . . ° Overflow? . . −15−16 15 10001 10000 01111 AC − Repres. Números p. Mario 2001 17 Complemento de Dois 0000 ... 0000 0000 0000 0000dois = 0dez 0000 ... 0000 0000 0000 0001dois = 1dez 0000 ... 0000 0000 0000 0010dois = 2dez ... 0111 ... 1111 1111 1111 1101dois = 2,147,483,645dez 0111 ... 1111 1111 1111 1110dois = 2,147,483,646dez 0111 ... 1111 1111 1111 1111dois = 2,147,483,647dez 1000 ... 0000 0000 0000 0000dois = −2,147,483,648dez 1000 ... 0000 0000 0000 0001dois = −2,147,483,647dez 1000 ... 0000 0000 0000 0010dois = −2,147,483,646dez ... 1111 ... 1111 1111 1111 1101dois = −3dez 1111 ... 1111 1111 1111 1110dois = −2dez 1111 ... 1111 1111 1111 1111dois = −1dez ¡ ¢ ° Um zero, 1° bit chamado bit de sinal , um negavito extra , não há 2,147,483,648dez p. AC − Repres. Números Mario 2001 18
  • 10. Fórmula do Complemento de Dois ° Pode representar números positivos e negativos em termos do valor do bit vez uma potência de 2: d31 x −231 + d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20   ° Exemplo 1111 1111 1111 1111 1111 1111 1111 1100dois = 1x−231 +1x230 +1x229+... +1x22+0x21+0x20 = −231 + 230 + 229 + ... + 22 + 0 + 0 = −2,147,483,648dez + 2,147,483,644dez = −4dez ° Nota: deve−se especificar a largura: nós usamos 32 bits AC − Repres. Números p. Mario 2001 19 Atalho do complemento de dois: Negação ° Inverter cada 0 para 1 e cada 1 para 0, então somar 1 ao resultado   Soma de um número seu complemento de um deve ser 111...111dois   111...111dois= −1dez ¥   Seja x a representação invertida de x Então x + x = −1 ⇒ x + x + 1 = 0 ⇒ x + 1 = −x ¥ ¥ ¥   ° Exemplo: −4 para +4 para −4 x : 1111 1111 1111 1111 1111 1111 1111 1100dois x : 0000 0000 0000 0000 0000 0000 0000 0011dois ¥ +1: 0000 0000 0000 0000 0000 0000 0000 0100dois () : 1111 1111 1111 1111 1111 1111 1111 1011dois ¥ +1: 1111 1111 1111 1111 1111 1111 1111 1100dois AC − Repres. Números p. Mario 2001 20
  • 11. Atalho do compl. de dois: extensão do sinal ♦ Converter número em complemento de 2 usando n bits para mais de n bits ♦ Simplesmente repetir o bit mais significante (bit de sinal) do menor para preencher os novos bits •Complemento de 2 positivo tem infinitos 0s •Complemento de 2 negativo tem infinitos 1s. •Representação de bit esconde os bits a frente; extensão de sinal restaura alguns deles •16−bit −4dez para 32−bit: 1111 1111 1111 1100dois 1111 1111 1111 1111 1111 1111 1111 1100dois AC − Repres. Números p. Mario 2001 21 Números com Sinal vs. Números sem Sinal ° Declaração C int   Declara um número com sinal   Usa complemento de dois ° Declaração C unsigned int   Declara um número sem sinal   Trata números 32 bits como inteiros sem sinal, de modo que o bit mais significante é parte do número, não um bit de sinal ° X = 1111 1111 1111 1111 1111 1111 1111 1100dois ° Y = 0011 1011 1001 1010 1000 1010 0000 0000dois ° É X > Y?   Sem sinal: SIM   Com sinal: NãO AC − Repres. Números p. Mario 2001 22
  • 12. Números são armazenados em endereços 00000 ° Memória é um lugar para armazenar bits ° Uma palavra é um número fixo 101101100110 01110 de bits (e.g., 32) em um endereço. ° Endereços são naturalmente representados como número sem sinal 11111 = 2k − 1 AC − Repres. Números p. Mario 2001 23 E se o número for muito grande? ° Os padrões de bits acima são apenas representações de números ° Os números realmente tem um número infinito de dígitos • Com quase todos sendo os mesmos exceto por alguns poucos mais à direita • Simplesmente não mostre normalmente os dígitos à frente ° Se o resultado de somar (−, *, /) não pode ser representado por estes bits de HW mais à direita, acontece o que é conhecido como overflow 00000 00001 00010 11110 11111 unsigned AC − Repres. Números p. Mario 2001 24
  • 13. Conclusão ° Nós representamos quot;coisasquot; no computador como padrões particulares de bits: N bits =>2N   números, caracteres, ... ° Decimal para cálculos humanos, binário para entender computadores, hex para entender binário ° Complemento de 2 é universal em computação: não pode ser evitado, então aprenda ° Operações no Computador sobre as representações de números correspondem as operações reais sobre as coisas reais. ° Overflow: números são infinitos mas os computadores são finitos, assim erros podem ocorrer AC − Repres. Números p. Mario 2001 25