我是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。

10-01 19:11
查看更多