SóProvas


ID
1822819
Banca
CESPE / CEBRASPE
Órgão
TRE-PI
Ano
2016
Provas
Disciplina
Arquitetura de Computadores
Assuntos

Sabendo que A e B correspondem, respectivamente, aos números binários 10111100 e 00110011, representados em palavra de 8 bites e em complemento a dois, assinale a opção que apresenta o resultado correto da operação A – B, em representação decimal.

Alternativas
Comentários
  • alguem se habilita?

  • Convertendo os números para binário temos o seguinte:


    A = 10111100 = 1*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0  = 198


    B= 00110011 = 0*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 51


    Não entendi a questão em "representados em palavra de 8 bites e em complemento a dois".

  • Primeiro é entender o que é complemento de 2


    O complemento de 1 e o complemento de 2 de um número binário são importantes porque eles permitem a representação demeros negativos. O método da aritmética do complemento de 2 é geralmente usado em computadores na operação com números negativos.

    Determinação do Complemento de 1:

    O complemento de 1 de um número binário é determinado trocando-se todos os 1s por 0s e todos os 0s por 1s, conforme ilustrado a seguir:

    Obs. O complemento de 1 foi utilizado no número binário (-B) por ser este identificado em subtração(-).

    (+A) = 10111100        (-B) = 00110011                                                                          

                                                                                       

                                                                                              0 0 1 1 0 0 1 1 Número binário                                                                   

                                                                                               ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓                                                                         

                                                                                              1 1 0 0 1 1 0 0 Complemento de 1

    Determinação do Complemento de 2:


    O complemento de 2 de um número binário é determinado somando 1 ao bit menos significativo do complemento de 1.

    Obs: Um número binário é um número em que os dígitos apresentam pesos. O bit mais à direita é o bit menos significativo (LSB – least significante bit) em um número inteiro binário e tem um peso de 2^0 = 1.


    Complemento de 2 = (complemento de 1) + 1


    Determine o complemento de 2 de (11001100 ), este número binário e o que encontramos no Complemento de 1.


    Solução

    Problema relacionado determinando o complemento de 2 de (11001100).                                                                           

    11001100  Complemento de 1               

    +            1  Soma-se 1                                                                                                                                                                              11001101  Complemento de 2


    Resumo: o execício pede aos números binários (+A) 10111100 e (-B) 00110011, representados em palavra de 8 bites e em complemento a dois correto analisando fizemos o que foi pedido agora vamos calcular ( A-B).

    Obs: Um bit de sinal 0 indica um número positivo e um bit de sinal 1 indica um número negativo o computador não identifica o sinal "- ou +" por isso a utilização do complemento 1 e complemento 2 para números negativos

     subtrações de números sinalizados:



    (A-B)= 10111100 – 00110011

    numero binário iniciado com o bit (1) que representa 

    A = 10111100 = 1*2^(-7) + 0*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0  = -128+32+16+8+4= -68

    B= 11001101 = 1*2^(-7) + 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = -128+64+8+4+1= -51

    Neste caso, –68 – (+51) = –68 + (-51) = – 119                                                                                             

     10111100  Minuendo (−68)                                                                                             

     11001101 Complemento de 2 do subtraendo (−51)                                                                                           

       10001001 Diferença (−119)


  • A explicação do componente de 2 eu entendi, porém não entendi porque foi aplicado somente no segundo valor, sendo que os 2 fazem parte da regra segundo a questão.

  • Danilo, você só faltou fazer o complemento de 2 do resultado final da operação, pois se não fizer vai dar -137 (10001001). 


    Fazendo o complemento de 2 de 10001001 vai dar 01110111 (-119).


  • Esta descrição e para aqueles que ficaram com duvidas do que já tinha explicado.


    Observe que na explicação anterior descrevo como chegamos no complemento de 2  e porque o utilizamos para definir um número binário negativo


    Obs:


    Um bit de sinal 0 indica um número positivo e um bit de sinal 1 indica um número negativo o computador não identifica o sinal "- ou +" por isso a utilização do complemento 1 e complemento 2 para números negativos, entenda que é para números negativo que na questão é (-B).


    Os bits e os respectivos pesos em potências de dois para o número negativo são mostrados a seguir. Observe que o bit de sinal negativo tem um peso de 1*2^(-7) ou –128.


     -7 6 5 4 3 2 1 0   -   expoente

      ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

      2 2 2 2 2 2 2 2    -   base

      1 0 0 0 1 0 0 1    -   número binário é o resultado de (A-B) observação não precisa refazer o complemento de 2

      ↓         ↓       ↓

    -128      8       1


    Somando os pesos em que os bits são 1s, temos:

    –128 + 8 + 1 = –119


    Detalhes do que foi feito na explicação anterior.


    O que está sendo pedido! 


    (A-B)= 10111100 – 00110011 - o número binário em negrito é o que temos para complemento de dois conforme a explicação anterior ao qual chegamos (11001101).


    número binário iniciado com o bit (1) que representa número negativo


    A = 10111100 = 1*2^(-7) + 0*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0  = -128+32+16+8+4= -68


    B = 11001101 = 1*2^(-7) + 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = -128+64+8+4+1= -51


    Neste caso, –68 – (+51) = –68 + (-51) = – 119                               

                                                                  

     10111100   - Minuendo (−68)                                                                                             

     11001101   - Complemento de 2 do subtraendo (−51)                                                                                           

     10001001    - Diferença (−119)




  • Uma explicação mais simples!

    Binário 10111100 - Decimal (188)

    - (subtrai)

    Binário 00110011 - Decimal (51)

    Total: 10001001 (137)

    10001001 (+c2) => 01110111 (-119).

  • Só consigo achar - 137.

    Vamos na fé.

  • Segue minha interpretação...

     

    Primeiramente, o enunciado pede para subtrair B de A

      10111010 --> A
    - 00110011 --> B
      10001001

     

    Atenção agora

    O enunciado diz que os números binários estão representados em Complemento de 2 (C2)
    Nesse caso, o resultado 10001001 está em C2

    Como o primeiro bit é 1, trata-se de um número binário negativo

     

    Se fosse realizada uma conversão direta do resultado da subtração para decimal, daria 137, no caso, a opção C

    Entretanto... Não podemos realizar uma conversão direta de um número binário negativo em C2 para achar a sua representação na Base 10, pois o valor apresentado seria outro...

    Se fosse um número binário positivo, bastaria apenas descartar o primeiro número (bit do sinal, que seria 0 de qualquer forma), fazendo a conversão de base com os demais 7 bits do módulo para achar o decimal.

    Porém, trata-se de um número binário negativo...

     

    Então... como descobrir a representação na Base 10 de um número binário que está em C2?

    Precisa-se aplicar novamente a regra de C2 para achar o binário originário, mantendo o sinal negativo.

     

    Solução

    10001001 - o resultado daquela subtração
    01110111 - aplicada a regra de C2 para achar o valor original, que equivale a 119 na Base 10
    Como o binário estava originalmente em C2, o seu valor era negativo, então...

     

    10001001 (Base 2 em C2) = -119 (Base 10)

     

     

    Segue um exemplo mais simples para quem não entendeu...

     
    O binário 0011 (Base 2) equivale a 3 em decimal (Base 10)

    O C2 desse binário é igual a 1101 que equivale a -3 (Base 10)

     

    Perceba que, nessa situação, 1101 não é igual a 13 (caso fizesse uma conversão direta), mas igual a -3 (pois o binário está em C2)

    Então, como eu faço para achar a equivalência de 1101 em decimal?

    Reaplica C2 no binário, ficando 0011 e mantém negativo o decimal convertido, que será -3

     

    Espero ter ajudado.

    :)