黑马程序员技术交流社区

标题: 关于十进制负数转为二进制的问题 [打印本页]

作者: 怪学究    时间: 2015-4-1 19:16
标题: 关于十进制负数转为二进制的问题
大家都知道,毕老师说过是:按正数变二进制取反加1,

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

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


作者: fantacyleo    时间: 2015-4-1 19:52
这就是人为规定。总要有一种方法来表示负数吧?最后人们就选定了补码的方式
作者: lvheqiang    时间: 2015-4-1 20:14
为了区分正数和负数在内存中的表现形式,规定 最高位 为符号位,最高位是0代表正数,1代表负数。
所以byte类型,能表示的数据范围是 -128 到 +127。  如果byte只表示正数的话,那就是 0-255 了。  
作者: 怪学究    时间: 2015-4-3 08:49
lvheqiang 发表于 2015-4-1 20:14
为了区分正数和负数在内存中的表现形式,规定 最高位 为符号位,最高位是0代表正数,1代表负数。
所以byte ...

嗯,谢谢了
作者: 懒的呼吸    时间: 2015-4-3 08:50
建议找本书看看二进制的规则。原码,反码,补码,移码。
作者: 胡几手    时间: 2015-4-3 08:58
谢谢楼主的提问,我之前还没想到这个问题呢,现在懂了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2