Considere o importante trabalho com os bits. Descreva que tipo de operação está sendo realizada e informe o resultado obtido. 0 \mathrm{~b} 00111100 \& \sim(0 \mathrm{~b} 00111100)
e pede duas coisas: descrever que tipo de operação é essa e informar o resultado obtido. Aqui os dados fornecidos são o literal binário \text{0b}00111100 (oito bits) e os operadores bitwise \mathbin{\&} (AND bit a bit) e \sim (NOT bit a bit).
Passo 2
Explicando de forma bem didática os operadores envolvidos:
O operador AND bit a bit (\mathbin{\&}) age posição a posição nos bits: dada uma posição com bits a e b, o resultado a \mathbin{\&} b vale 1 somente quando a=1 e b=1; caso contrário vale 0.
Tabela verdade do AND:\begin{array}{c|c|c} a & b & a\mathbin{\&}b\\hline 0 & 0 & 0\\\\ 0 & 1 & 0\\\\ 1 & 0 & 0\\\\ 1 & 1 & 1 \end{array}
O operador NOT bit a bit (\sim) simplesmente inverte cada bit: \sim 0 = 1 e \sim 1 = 0. Quando trabalhar com um literal escrito com 8 bits (como aqui), é natural assumir complemento sobre esses 8 bits (ou seja, inverter cada um dos 8 bits).
Passo 3
Assumindo representação em 8 bits (porque o literal tem 8 dígitos), calculemos o complemento bit a bit de \text{0b}00111100. Invertendo cada bit:
Explicando posição a posição: em cada coluna um dos dois bits é sempre 0 (porque em cada posição um deles é o complemento do outro), logo cada AND dá 0. Portanto o resultado é \text{0b}00000000.
Passo 5
Interpretação geral e prova curta (útil para a prova): para qualquer padrão de bits x vale
x \mathbin{\&} \sim x = 0,
porque em cada posição de bit x_i temos ou x_i=0 (então 0\mathbin{\&}1=0) ou x_i=1 (então 1\mathbin{\&}0=0). Logo todos os bits do resultado são zero. Isso independe do tamanho da palavra, desde que a operação \sim seja o complemento bit a bit sobre a mesma largura considerada.