A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第二题:
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,他就按照正数的原反补来

两数相加的问题
运算是原码转成补码运算依靠补码,还有结果就是补码的值,不用再由补码转回原码

2 个回复

倒序浏览
这东西可以直接忽略不用管
回复 使用道具 举报
ehehe 发表于 2015-9-7 21:38
这东西可以直接忽略不用管

恩恩,算完了,我舍友告诉我基本用不上,重点没在这里
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马