Skip to content

Latest commit

 

History

History
46 lines (32 loc) · 1.36 KB

File metadata and controls

46 lines (32 loc) · 1.36 KB

Pergunta

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;

Soluções

Solução 1

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