Java二进制正数强制转换byte后变负数的问题.为何byte binVal4 = (byte)0b11101001;溢出后变成了-23?这个变化的过程可否详细说下?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 06:18:00

Java二进制正数强制转换byte后变负数的问题.为何byte binVal4 = (byte)0b11101001;溢出后变成了-23?这个变化的过程可否详细说下?
Java二进制正数强制转换byte后变负数的问题.
为何
byte binVal4 = (byte)0b11101001;
溢出后变成了-23?
这个变化的过程可否详细说下?

Java二进制正数强制转换byte后变负数的问题.为何byte binVal4 = (byte)0b11101001;溢出后变成了-23?这个变化的过程可否详细说下?
0b11101001
正好8位一个字节,第一个位是符号位.
整型数在计算机中用补码存储的.
所以由补码11101001求原码
(负数求原码除了符号位,其他位依次取反最后加一,或者先减一再取反,结果一样的)
得到原码10010111 就是 -23.