本帖最后由 王德升 于 2019-8-5 08:55 编辑
请解释,为什么结果是-56 ?
答:
1. byte是占一个字节8位,取值范围是[-128,127],因为b+=100,相当于b=b+100; b=200,超出byte的取值范围。
2. 200的二进制是:00000000 00000000 00000000 11001000
3. 计算存在形式都是以补码形式存在,取200的后8位作为运算(方便计算,前面的舍弃),因为
11001000原码(要得到补码需要取反+1),
00110111 反码,
00111000 补码,最高位是符号位(前面24位都是1,1代表负数,0代表正数),
10011100的补码算出数为:32+16+8=56,加上最高的符号位是1,所以是-56.
|
|