1 - Qual o valor hexadecimal da variável a
após a execução do seguinte código
C#? E o valor em decimal? Justifica a tua resposta.
uint a = 0xFEDE;
a &= 0x0F0F;
O valor atribuído à variável a
na primeira linha de código é 0xFEDE
. Na
segunda linha de código está a ser realizada uma operação &
(AND) entre a
(cujo valor é 0xFEDE
) e o literal hexadecimal 0x0F0F
. Podemos realizar a
operação mais facilmente convertendo ambos os valores em binário, e
posteriormente convertendo o resultado de volta em hexadecimal, da seguinte
forma:
0xFEDE -> 1111 1110 1101 1110
0x0F0F -> 0000 1111 0000 1111
& -------------------
0000 1110 0000 1110 -> 0x0E0E
Uma vez que o resultado é guardado de volta na variável a
, o valor desta após
as linhas de código apresentadas é de 0x0E0E
em hexadecimal.
Para converter um valor hexadecimal em decimal, basta multiplicar cada dígito hexadecimal por 16 elevado à posição desse mesmo dígito, e somar todos os valores resultantes, da seguinte forma:
0 x 163 + E x 162 + 0 x 161 + E x 160
= 0 + 14 x 162 + 0 + 14 x 1
= 14 x 256 + 14
= 3598
Desta forma, o valor de a
após o código ser executado é de 3598 em decimal.
Por Nuno Fachada