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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 fighting2016 于 2016-2-27 16:31 编辑

【求教】byte占一个字节,范围为-128—127,关于-128是怎么算来的?

4 个回复

倒序浏览
本帖最后由 陌城 于 2016-2-27 16:49 编辑

二进制的运算是根据补码来运算的 ,正数的补码是它本身
所以127的补码也就是他本身0111 1111,,也就是一个字节最大能表示的
而负数的补码是正数取反+1,
-1的补码就是1取反是1111 1110,加1就是1111 1111(补码),
-2的补码是1111 1110,以此类推-127的补码是1000 0001,
那么就多出来一个数补码为1000 0000,也就是负0,印度人就用它来表示-128了

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
-2的七次方,1000 0000负数最高位为符号位,也可以作为数值位

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
看到楼主这个问题我也困惑了,就从网上找了找,感觉这个解释比较合理
8位二进的补码组合序列有
0000 0000 - 0111 1111      0  ~ +127
1000 0000                          用来干啥好呢?(表示-0,不是的,-0的原码是1000 0000 补码是
                                           0000 0000  +0 的补码也是 0000 0000)
                                          
1000 0001  ~  1111 1111  -1  ~  -127
全部状态为256个
再看看这个规律表
    原码              补码          值
0111 1111   0111 1111    127
0111 1110   0111 1110    126
..................补码不断-1...............
0000 0000   0000 0000     0
1000 0001   1111 1111    -1
1000 0010   1111 1110    -2
1000 0011   1111 1101    -3
......补码不断-1........
1111 1111   1000 0001    -127
无法表达      1000 0000    -128


于是就有了规定 1000 0000 定为 -128的补码这样规定后,负数的补码在机器中就好算了。
在约定的范围内(-128  ~  +127,对16位32位64位等扩大范围)
先将该负数取绝对值,再用二进制表示出这个绝对值 (不管符号位
对该二进制数进行取反加一操作就得到负数的补码了
-128 绝对值是 128
128的二进制表示为:
1000 0000
取反
0111 1111
加1
1000 0000
这就是-128的补码
这种办法算出的结果符合“规定值”,规定而已。

评分

参与人数 1黑马币 +3 收起 理由
洋葱头头 + 3 很给力!

查看全部评分

回复 使用道具 举报
陌城 发表于 2016-2-27 16:47
二进制的运算是根据补码来运算的 ,正数的补码是它本身
所以127的补码也就是他本身0111 1111,,也就是一个 ...

印度人是什么鬼????
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马