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

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 09:37:41
Java二进制正数强制转换byte后变负数的问题.为何byte binVal4 = (byte)0b11101001;溢出后变成了-23?这个变化的过程可否详细说下?
xՑKO@ǿJ D;M<BԘxC"P$T)BB)/ n7o3i6,]=2F0YL:V9sU4.Y6Z]/gCDq]Q$IDQ:v6<{A"덕 [b*IL#5k?Mү}?85nt8B YQgQ阇:ϙ+&{MY13m>Ƞk6 RV4@X>SQ4ˆx\ܦ\l+p  [@Sq-n2^VJ4IPyqJ9eXy 2(C!;Y`zH(p>lަ

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.