一个Java位操作的奇怪问题:
例如:byte testValue = 2;
System.out.println( String.valueOf(~testValue));
为何打印的结果为: -3 而不是 -125又例 :byte testValue = -2;
System.out.println( String.valueOf(~testValue));
为何打印的结果为: 1 而不是 125有哪位高手可以解析一下? 谢谢!
例如:byte testValue = 2;
System.out.println( String.valueOf(~testValue));
为何打印的结果为: -3 而不是 -125又例 :byte testValue = -2;
System.out.println( String.valueOf(~testValue));
为何打印的结果为: 1 而不是 125有哪位高手可以解析一下? 谢谢!
~2 = 11111101, 最高位是符号位, 所以11111101相当于10000010 + 1,
也就是后7位取反加1, 补码的运算规则