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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

大家都知道,毕老师说过是:按正数变二进制取反加1,

但是一个0111,1111为 127;为啥1000,0001为-127而不是129。

而+1(十进制)的二进制为0000,0001,其负数为1111,1111而不是255

5 个回复

正序浏览
谢谢楼主的提问,我之前还没想到这个问题呢,现在懂了。
回复 使用道具 举报
建议找本书看看二进制的规则。原码,反码,补码,移码。
回复 使用道具 举报
lvheqiang 发表于 2015-4-1 20:14
为了区分正数和负数在内存中的表现形式,规定 最高位 为符号位,最高位是0代表正数,1代表负数。
所以byte ...

嗯,谢谢了
回复 使用道具 举报
为了区分正数和负数在内存中的表现形式,规定 最高位 为符号位,最高位是0代表正数,1代表负数。
所以byte类型,能表示的数据范围是 -128 到 +127。  如果byte只表示正数的话,那就是 0-255 了。  
回复 使用道具 举报
这就是人为规定。总要有一种方法来表示负数吧?最后人们就选定了补码的方式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马