Java类型转换之强制转换byte赋值超过127会发生什么?
byte a = ( byte)130值为何是-126?byte存储超限,溢出?
问题所需的一些知识:
二进制中的原码,反码,补码:
* 原码
* 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
* 通过一个字节,也就是8个二进制位表示+7和-7
* 0(符号位) 0000111
* 1(符号位) 0000111
* 反码
* 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
* 1(符号位) 0000111
* 1 1111000
* 补码
* 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
* 11111001
问题解答:
130的补码:
00000000 00000000 00000000 10000010
强转后:
补码: 100000010
反码: 100000001
原码: 11111110
根据8421表:
计算: 1 1 1 1 1 1 1 0
64 32 16 8 4 2 1
0+2+4+8+16+32+64=126
首位是1,为负数,故(byte)130为-126
----------我的CSDN博客:HappyMouse丨贝贝
----------2/28/2019 8:52:26 PM