有问题,编译会不通过,要进行类型转换,(byte)-130,转换后的结果是126。
结果分析:
第一、-130默认是int类型,先看看130的原码(正数的原码反码补码相同)
00000000 00000000 00000000 10000010
第二、计算-130的原码(只需要将130的原码最高位符号位变为1)
10000000 00000000 00000000 10000010
第三、计算-130的补码,负数的补码需要计算(计算机是以补码形式存储数据的)
11111111 11111111 11111111 01111101 反码(原码转反码最高符号位不变其余位1变0、0变1)
11111111 11111111 11111111 01111110 补码(反码加1,二进制中1加1等于0再往前进1)
第四、由于byte只占8个二进制位,因此要对高位截取,得到如下结果
用01111110转10进制1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+0*2^0(最高位符号位不参与运算)得到126。