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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gtf 中级黑马   /  2014-6-30 18:29  /  1630 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家都知道byte 类型的-128的二进制形式是1000 0000.
谁帮我具体讲讲为什么是这样的?怎么得来的。
谢谢

8 个回复

倒序浏览
负数的二进制是这个数取反加1
比如-6的二进制,6的二进制是0000-0110取反就是1111-1001再加1就是1111-1010
同理-128二进制,先看128二进制为1000-0000取反为0111-1111再加1不就是1000-0000吗
负数二进制前面都是1,这样只是取了最有效的八位
128二进制为 0000-0000 0000-0000 0000-0000 1000-0000 32位的
-128二进制为1111-1111 1111-1111 1111-1111 1000-0000
他们是不同的
回复 使用道具 举报 1 0
本帖最后由 Whero 于 2014-6-30 19:16 编辑

C:\Users\XK-21\Desktop\1.jpg

1.jpg (180.84 KB, 下载次数: 78)

我用笔算的,这样能更具体点

我用笔算的,这样能更具体点

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 看到之后真心没忍住加分!

查看全部评分

回复 使用道具 举报 1 0
学习                 
回复 使用道具 举报
燿陚√揚葳 发表于 2014-6-30 18:51
负数的二进制是这个数取反加1
比如-6的二进制,6的二进制是0000-0110取反就是1111-1001再加1就是1111-1010
...

谢谢了
回复 使用道具 举报

不客气:)
回复 使用道具 举报
-128的二进制表示为1000 0000
第一位是符号位,1代表是负数,0代表是正数。
后七位用来存储数据,1111 1111是把所有的位来存数据,首位为1,表示是最大的负数,即-1.
再来看正数的最大值,为0111 1111,首位为0,是正数,即127.
用-1来减去127即得到-128,用-1和127的二进制表示去做减法即可得到-128的二进制为1000 0000
希望可以帮到你!
回复 使用道具 举报
6os回复 很烦人的
回复 使用道具 举报
本帖最后由 遗失的美好YXJ 于 2014-6-30 23:23 编辑

今天正好学2进制,一开始也是云里雾里的,不过现在觉得应该弄明白怎么回事了.为什么那么难理解的原因是:负数的二进制是先有结果(负数的二进制码在计算机中按照逻辑就应该这样的),然后再有正数怎么转化成二进制的方法(正数的二进制取反加1).我们很容易误解为,转换方法是先定义好的,负数的二进制表示是由方法得出来的,其实正好相反.


为了说byte型的-128为什么是1000 0000,我先说为什么byte型的-1为什么是1111 1111;这其实是一个问题,弄懂-1,-128一样的.
因为byte型只有8个bit.可以表示的数据总量是256个.又要必须得能表示负数第一位设计用来表示正负的符号位.
那么正数的1是0000 0001(这个很好理解),那么1+(-1)=0,0是0000 0000,整个1+(-1)=0(1 0000 0000存入byte中1被舍去了)必须符合二进制加法的运算逻辑,那么-1必须是1111 1111.所以是先得出的-1的byte型的结果是1111 1111(这里我不是用0000 0001取反+1得出的).用同样的逻辑可以得到byte型的-2是1111 1110;然后依次类推一直可以得到1000 0000是-128.然后再根据byte型的2进制正负数的关系总结出的方法:正数的二进制位取反加1就是负数的二进制表示.
所以负数的二进制码按先有负数的二进制码这个结果,再总结出算负数二进制码的方法.现在书本上直接跟你说负数的二进制是正数取反+1,有点本末倒置,所以比较难理解.
(以上纯属个人理解)



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马