我是PHP的Java新手,所以花一些时间/精力来了解类型。然后我遇到了这个:
Byte bb = new Byte("127");
System.out.println(bb.byteValue());
Short ss = new Short("32727");
System.out.println(ss.shortValue());
System.out.println(ss.byteValue());
输出127、32727和-41?
有人可以告诉我,当Short 32727表示为字节时,它如何到达-41吗?
最佳答案
32727的二进制表示形式是0111111111010111
。其中的byteValue()仅是最小的8位,所以11010111
11010111
为负,因为它以1开头。
取Two's complement(对每个位进行补码,然后加一位)得出101001
,即2 ^ 5 + 2 ^ 3 + 2 ^ 0 = 32 + 8 + 1 = 41
所以我们有-41。