Complemento de dois é o sistema mais usado para representação de números inteiros com sinal nos computadores modernos.
O dígito mais significativo (MSB) é o que informa o sinal do número. Se este dígito for zero o número é positivo e se for um é negativo.
Os números são escritos da seguinte forma:
- Positivos: sinal (bit 0) + o número em binário.
- Exemplos: 0001 (+1), 0100 (+4) e 0111 (+7)
- Negativos:
- Pegamos o número em binário e "invertemos" (0100 invertendo têm-se 1011) e
- Somamos um ao valor "invertido" (1011 + 0001 = 1100)
fonte: http://pt.wikipedia.org/wiki/Complemento_para_dois
Logo:
Para A = -345
Converte-se: 345 para binário e acrecente o número de zeros necessários para completar o nº de bits informados no comando da questão = 101011001 (9bits) = 0000000 101011001
Inverte-se os bits do número resultante: 1111 1110 1010 0110
Soma 1 no valor invertido: 1111111010100110 + 1 = 1111 1110 1010 0111
Para B = 239
Converte-se: 239 para binário e acrecente o número de zeros necessários para completar o nº de bits informados no comando da questão = 00000000 11101111
Inverte-se os bits: 11111111 00010000
Soma 1 no valor invertido: 11111111 00010000+ 1 = 11111111 00010001
Finalmente faz a soma dos 2:
1111 1110 1010 0111 +
1111 1111 0001 0001
1 1111 1101 1011 1000
ignora o bit de carrie (o bit em negrito) temos:
1111 1101 1011 1000