SóProvas


ID
1561030
Banca
Exército
Órgão
EsFCEx
Ano
2014
Provas
Disciplina
Programação
Assuntos

Considere o programa escrito em linguagem C:


# include < stdio.h >


int main ()

{

int i=9;

i^=15;

i>>=1;

i<<=2;

printf ("%d",i);

}


O resultado impresso será:

Alternativas
Comentários
  • SOLUÇÃO:

    i^=15; → i = i^15; i = 9^15 (^ é um “OU Exclusivo” de bits)

    9(base 2) = 1001, e 15(base 2) = 1111, logo 1001 ^ 1111 = 0110

    então:

    i>>=1 (1 shift right em 0110) → 011;

    i<<=2 (2 shift left em 011) → 01100

     

    01100(base10)  = 12

  • Fazendo tudo direto em binário

     

    8        4           2          1

    1          0              0             1      = 9          (i começa com 9)    int i=9;

    1          1              1             1      =15         (depois i recebe 15 com porta XOR)        i^=15;

    0          1              1             0      =6           (resultado  do cáculo XOR do 9 e do 15)

    0          0              1             1     =3            (repare que 1 bit é deslocado para a direita)        i>>=1;

    1          1              0             0     =12          (para finalizar 2 bits são deslocados para a esquerda e sai o resultado)     i<<=2;

  • Melhor explicação.