byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。取反得到 01111110 加1 得到 01111111 ,那么值为 -127理解此运算规则我们正式开始说byte,byte正好是8位的二进制数。short是16位 int是32位 long是64位。不难理解,byte的最大正数就是 01111111,也就是 127。那么你可能会想 byte的最小负数就是 11111111 了,对不对?让我们看看11111111这个二进制数表示多少。根据上面的提示 我们知道这是一个负数。它的值是先取反再加1 。111001000,当int转成byte的时候,那么计算机会只保留最后8位,即11001000。然后11001000的最高位是1,那么表示是一个负数,而负数在计算机中都是以补码的形式保存的,所以我们计算11001000的原码为00111000,即56,所以11001000表示的是-56,所以最后test的值为-56。
暂无评论