黑马程序员技术交流社区
标题:
关于十进制负数转为二进制的问题
[打印本页]
作者:
怪学究
时间:
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