Dúvida em aritmética de bytes

2 respostas
T

Dado o código:

public class TestByte
{
	public static void main(String...sim){
		byte b = 127;
		byte b2 = 2;
		byte b3 = (byte) (b + b2);

		System.out.println(b3);
	}
}

Por que ele imprime -127 e não -1 ??

Veja o meu raciocínio:

127: 0 1 1 1 1 1 1 1 (sendo o primeiro bit para o sinal)
2 : 0 0 0 0 0 0 1 0 (sendo o primeiro bit para o sinal)

Sum:1 0 0 0 0 0 0 1 (isso não representa o número 1 negativo?!?)

2 Respostas

sergiotaborda
TiagoTC:
Dado o código:
public class TestByte
{
	public static void main(String...sim){
		byte b = 127;
		byte b2 = 2;
		byte b3 = (byte) (b + b2);

		System.out.println(b3);
	}
}

Por que ele imprime -127 e não -1 ??

Veja o meu raciocínio:

127: 0 1 1 1 1 1 1 1 (sendo o primeiro bit para o sinal)
2 : 0 0 0 0 0 0 1 0 (sendo o primeiro bit para o sinal)

Sum:1 0 0 0 0 0 0 1 (isso não representa o número 1 negativo?!?)

sim, mas o numero -127 não o -1. Lembre-se que para numeros negativos os bits são todos invertidos ou seja

1 0 0 0 0 0 0 1 equivale a (menos 0 1 1 1 1 1 1 0)

ViniGodoy

Mais informações:

Criado 12 de janeiro de 2010
Ultima resposta 12 de jan. de 2010
Respostas 2
Participantes 3