byte by = (byte)130 ; 因为java中整数默认为int类型,我们先把130用二进制表示出来,我们使用8421码快速转换得到 10000010 在内存中数据用补码表示,而130是一个正数,原码、反码、补码一样 又因为int类型在内存中占用四个字节,所以130在内存中的表示如下 00000000 00000000 00000000 10000010 当我们对130强制转换时,因为byte只占一个字节,所以前面的数据被截取 剩下:10000010 从符号位看出这是一个负数,我们把它先转换为反码 反码: 10000001 我们对数据位取反得到原码 原码: 11111110 我们再次使用8421码把他转换为十进制 得到 -(64+32+16+8+4+2)=-126 所以 byte by = (byte)130 ; 结果输出为-126 |
原码,反码,补码的溢出计算
最新推荐文章于 2024-06-02 21:17:37 发布