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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte a=3;
byte b=-3;
以二进制来计算a+b=0
  0000 0011
+11111101(-3的补码)
-----------------
10000 0000(1后面跟了八个0,)
我想问的时这个1 为什么会取消掉,为什么不是转换到更大的存储类型?
求解
还有负数是怎么用二进制表示的,最好举例说明一下?谢谢!

3 个回复

倒序浏览
xbin0316@qq.com 来自手机 初级黑马 2015-12-18 07:48:06
沙发
baby,我给你说一个简单的。计算机的数据全都是用二进制的整数表示的,那么二进制里面最小的就是0,没有负数,那么计算机想表示负数怎么办呢?只好拿现有的数开刀了。比如byte型,他是八位,取值范围原本应该0--255
回复 使用道具 举报
xbin0316@qq.com 来自手机 初级黑马 2015-12-18 07:51:19
藤椅
那这就没有负数了,为了表示负数,只好把0--255砍成两半,一半用来表示正数,一半用来表示负数。那怎么砍呢?那就是看最高位(符号位),大于1-0000000的表示负数,小于此的表示正数。
希望我自己的理解能帮到你。
回复 使用道具 举报
xbin0316@qq.com 发表于 2015-12-18 07:51
那这就没有负数了,为了表示负数,只好把0--255砍成两半,一半用来表示正数,一半用来表示负数。那怎么砍呢 ...

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