Considere o trecho do programa:
i=6;
i+ i<< 6;
printf(“0x%x = %d\n”, i, i);
O que é impresso ?
e considerando este, o que é immpresso?
i^= 0xF
printf(“0x%x = %d\n”, i, i);
Considere o trecho do programa:
i=6;
i+ i<< 6;
printf(“0x%x = %d\n”, i, i);
O que é impresso ?
e considerando este, o que é immpresso?
i^= 0xF
printf(“0x%x = %d\n”, i, i);
@lauram tudo bom?
A variavel i é do tipo inteiro? Estou considerando que sim para a resposta abaixo.
Como as operações são com operadores binários:
i=6 -> 0110
a operação i+ i<< 6;
irá somar i+i e o resultado será deslocado em 6 bits para a esquerda. será necessário colocar uma atribuição, caso contrário essa linha não terá efeito, por exemplo ‘resultado=i+ i<< 6;’
Continuando…
Somando i+i
i+i = 12
-> 000000001100
Deslocando em 6 bits
12 << 6
-> 001100000000
001100000000 = 768
printf("0x%x = %d\n", i, i)
; -> 0x300 = 768
i^= 0xF
-> 001100001111
001100001111 = 783
printf("0x%x = %d\n", i, i);
-> 0x30f = 783Espero ter ajudado.