第二题:
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
有问题,因为byte的取值范围是-128~127 130超了,会造成精度丢失
130
原码:10000010
反码:11111101
补码:11111110 //-126
140
原码:10001100
反码:11110011
补码:11110100 //-116
-300
原码:1 00101100
反码: 00101100
补码: 00101100 //44
正数原反补都一样
-130
原码:10000010
反码:11111101
补码:11111110 //-126
运算时不管原来是正是负,不根据原来数值判断反码变不变
先砍掉,再看首个数是正还是负,由这个数判断,反码变不变
例如-130 先按照int类型写下他的二进制,第32位是一,但是这时
先砍掉前面的三个字节,再来判断正负,根据正负写元反补,
(不是直接判断正负,再来写下原反补,再砍掉)
他的byte类型数值第一位是0,他就按照正数的原反补来
两数相加的问题
运算是原码转成补码运算依靠补码,还有结果就是补码的值,不用再由补码转回原码 |
|