黑马程序员技术交流社区

标题: byte类型的-128怎么表示? [打印本页]

作者: 肥洋洋    时间: 2014-5-20 21:22
标题: byte类型的-128怎么表示?
本帖最后由 肥洋洋 于 2014-5-20 22:35 编辑

今天的课上有同学提问老师byte类型的-128是不是1000 0000老师竟然不知道,请问这个怎么看??是不是-128呢?最高位不是符号位嘛,这是不是可以看做-0?如果不是1000 0000,那byte的-128怎么表示?
作者: 丁绍然    时间: 2014-5-20 21:47
byte用八位二进制码表示一个十进制数
所以范围是-128~127也就是1000 0000到0111 1111
-128的绝对值二进制为1000 0000,取反后0111 1111。加1后是1000 0000。

作者: youcyou    时间: 2014-5-20 21:49
不表示-0的,首先明确一下计算机用补码存储
然后你可以假设1000 0000是X的补码  然后用他加上+127的补码0111 1111
相加得到1111 1111这个补码为负数转换成原码为1000 0001而该原码对应的值为-1
所以1000 0000表示的是-128的补码
还有就是-128没有原码和反码,+0和-0的补码都是0000 0000
作者: youcyou    时间: 2014-5-20 21:52
我敲了半天居然被人抢先回答,脸一黑。。。
作者: 肥洋洋    时间: 2014-5-20 22:36
youcyou 发表于 2014-5-20 21:49
不表示-0的,首先明确一下计算机用补码存储
然后你可以假设1000 0000是X的补码  然后用他加上+127的补码011 ...

厉害厉害:handshake
作者: 小叔    时间: 2014-5-21 15:09
长知识了
作者: 13556793092    时间: 2014-5-21 16:06
我也来凑个热闹,运用一下自己学习的知识
1.首先说一下,源码1000 0000 是不带表-0的,源码的最高位符号,正数的最高位是0,负数的最高为是1.
2.由此源码只是针对于正负数,0既不是正数,也不是负数,所以源码1000 0000不可能为0,0的源码最高为为0不变。
3.根据负数的补码公式,-128的补码就是 1 0000 0000 - 1000 0000=1000 000 ,反码就是1111 1111,
源码就是1000 0000,其实在这里是舍去了-128的最高的进制位-1.

总结了半天 汗
作者: chenzhiyuan    时间: 2014-5-23 09:58
127+1    会是-128
作者: 906822773    时间: 2014-6-22 08:59
老师不会不知道吧。。。
作者: caohaikuan    时间: 2014-6-22 09:33
基础一定要搞明吧啊~
作者: 从未有过的晴天    时间: 2014-6-22 10:17
我们老师说进制转换了解就可以,实在不明白就忘了吧
作者: GYSWL    时间: 2014-8-8 07:19
byte用八位二进制码表示一个十进制数
所以范围是-128~127也就是1000 0000到0111 1111
-128的绝对值二进制为1000 0000,取反后0111 1111。加1后是1000 0000。
作者: 静水流华    时间: 2014-8-31 16:05
来凑个热闹
作者: 黑色的雪    时间: 2014-9-1 13:06
才疏学浅啊  看不懂的说
作者: 段sir!    时间: 2014-9-14 22:57
你用计算器,10进制转2进制,转换一下,就知道结果了啊。这个还要问老师啊。嘎嘎
作者: 段sir!    时间: 2014-9-14 23:07
byte是一个八位的类型,-128的绝对值是128,128的源码是1000 0000,它的反码是0111 1111,加1,则是1000 0000.补码-128的
作者: 侯鹏成    时间: 2014-12-11 19:29
计算机中所有数据都是以补码形式存在的,先写出-128的原码,原码取反得到反码,反码再加1便得到-128的补码,即10000000
作者: 王者之风西昆仑    时间: 2015-1-4 15:51
丁绍然 发表于 2014-5-20 21:47
byte用八位二进制码表示一个十进制数
所以范围是-128~127也就是1000 0000到0111 1111
-128的绝对值二进制 ...

回答的非常好
作者: pj1988    时间: 2015-1-5 23:22
搞忘了,回去看下视频
作者: q798500920    时间: 2015-1-15 21:59
没研究的那么深啊               
作者: jiangwenjun    时间: 2015-1-24 22:52
int 最大应该到127.  那-128  不是十六进制的  128  取反~  加1吗?
作者: 黑马小夏    时间: 2015-3-12 00:10
已经学习,感学楼主
作者: heima_yjh    时间: 2015-3-12 15:37
本帖最后由 heima_yjh 于 2015-3-12 16:16 编辑

今天偶然看到该贴,那就来个经典回答吧,那就先上张自己花的图吧。有点难看,哈哈。 看懂该图,你也就明白了。
作者: 麻仁博    时间: 2015-3-22 13:16
楼上这个图 好!! 哈哈 看前面的有点难
作者: 陈文超    时间: 2015-4-23 22:17
受教了,哎呀
作者: 严晗哲    时间: 2015-4-26 13:09
负数的表示形式是源码取反+1,绝对值128的源码是1000 0000,取反就等于0111,1111,然后在+1就等于了-128,页就是1000,0000
作者: 严晗哲    时间: 2015-5-31 19:20
是1000 0000
作者: 娜妞子~    时间: 2015-7-26 10:59
我只想来证实一下、
作者: 探险家丶    时间: 2015-8-7 22:47
今天课上老师说可以看作是负0的
作者: xlqx15    时间: 2015-8-17 00:24
heima_yjh 发表于 2015-3-12 15:37
今天偶然看到该贴,那就来个经典回答吧,那就先上张自己花的图吧。有点难看,哈哈。看懂该图,你也就明白了 ...

哈哈,解释的很好!看懂了的说
作者: Liveei    时间: 2015-8-19 21:49
这道题刚学的时候我也有疑问,问度娘知道的
作者: 球球_    时间: 2015-9-20 00:14
有个使用的公式  X+~X=-1,然后呢正数128的原码/补码都是10000000取反得到01111111,也就是127,那么就可以得到X=-1-127等于-128
作者: docwei    时间: 2016-2-25 23:31
正负128的二进制是一样的
作者: fanhongwei1105    时间: 2016-5-24 00:16
yte用八位二进制码表示一个十进制数  所以范围是-128~127也就是1000 0000到0111 1111 -128的绝对值二进制为1000 0000,取反后0111 1111。加1后是1000 0000。
作者: wz529377283    时间: 2016-7-10 23:42
我也一直不会这个问题,好难啊,这个问题明日再想




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