黑马程序员技术交流社区

标题: [byte]中00000000 与10000000的区别是什么? [打印本页]

作者: Kas_ygx    时间: 2016-7-2 15:47
标题: [byte]中00000000 与10000000的区别是什么?
欢迎各位老师,学长学姐来指导
作者: Kas_ygx    时间: 2016-7-2 15:56
今天看资料时有一个疑惑,挥之不去,零基础导致想破脑袋也没想通,所以在此请教各位前辈,望不吝指导:
话说整数型数据类型 byte占了一个字节,取值范围是-128 ~ 127;那么问题来了:
1. byte数据类型能不能取值-128或127?  答: 经验证可以等于-128或127;
2. byte数据类型的-128的二进制表达式是什么?  答: 经验证,1 111111为-127,0 1111111为127,那么-128怎么表达呢?
3. 0 0000000和1 0000000 这两个表达式哪个代表0呢,另外一个又代表什么意思呢?

作者: Kas_ygx    时间: 2016-7-2 15:59
我是7/26重庆校区基础班的学员
作者: Kas_ygx    时间: 2016-7-2 16:04
没人,哎
作者: Kas_ygx    时间: 2016-7-2 16:14

作者: as6163522    时间: 2016-7-2 16:40
其实核心就是一个二进制算法的问题
二进制算法很简单。除二余1得1,整除等0
举个栗子32
32/2 = 16 得整 取 0
16/2 = 8   等整 取 0
8/2   = 4   得整     0
4/2   = 2              0
2/2   = 1              0
1/2           有余     1
32=100000
-128
-128/2 = 64         0
64/2    = 32         0
32/2    = 16         0
16/2    =  8          0
8/2      =  4         0
4/2      =  2          0
2/2      = 1          0
1/2       有余         1
-128=-10000000
当二进制反推10进制的时候逆推就可以了
00000000任何时候*2都是0肯定是0
10000000=1*2*2*2*2*2*2*2=128
当然如果有11010之类的1就+1在*2
栗子110=(1*2+1)*2=6

作者: Kas_ygx    时间: 2016-8-16 23:06
自己顶贴,可以赚黑马币
作者: Kas_ygx    时间: 2016-8-16 23:20

作者: Kas_ygx    时间: 2016-8-16 23:25

作者: bin931207    时间: 2016-8-16 23:35
最高位是0的是正数,最高位是1的是负数
作者: 726477179    时间: 2016-8-17 14:38
10000000代表-128
作者: wangxikun    时间: 2016-8-17 15:27
人气不是很旺啊,大家快来帮忙解答疑惑
作者: talons    时间: 2016-8-17 21:35
1byte = 8位
负数存储的是补码。
而最高位表示符号位,1表示负数,0表示正数。
[0000 0000]这个就是表示0
[0111 1111]这个表示127
127再加一就[1000 0000]这就越界了。
负数求补码:正数的反码+1;
所以-128的表示:

作者: talons    时间: 2016-8-17 21:37
尴尬。。。怎么就跳了
-128表示:
   128原码:[1000 0000]
   128反码:[0111 1111]
     再加1 :[1000 0000]
又回来了。
8位不好理解,你增加到16位就比较好理解了 。
作者: zhangliuwei    时间: 2016-8-17 22:32
byte字节之所以是 -128——127,是因为,0的存在。其中1000 0000代表的是-128,因为它是以补码的形式存在的,计算机之所以这样设计是便于计算。对于正数,他就是以原码形式存在,所以0是0000 0000
作者: shenlibing666    时间: 2016-8-17 22:36
最高位是符号位,0表示正数,1表示负数
作者: 冯潜001    时间: 2016-8-17 23:00
1byte = 8位
即【0000 0000】 八位2进制   首位代表正负  0 为正  1为负   2的7方 为128  因为在非负数中0占一位 所以整数到127
作者: 695212308    时间: 2016-8-18 18:36
127   -128
作者: Kas_ygx    时间: 2016-8-18 23:37
talons 发表于 2016-8-17 21:37
尴尬。。。怎么就跳了
-128表示:
   128原码:[1000 0000]

多谢指点,很感谢
作者: Kas_ygx    时间: 2016-8-18 23:38
各位前辈的解答非常的详细和有用,再次感谢大家的帮助
作者: Kas_ygx    时间: 2016-8-18 23:42

作者: Kas_ygx    时间: 2016-8-18 23:58

作者: Kas_ygx    时间: 2016-8-19 00:03

作者: chensc    时间: 2016-8-19 13:33
学习学习!
作者: Kas_ygx    时间: 2016-8-19 22:06

作者: Kas_ygx    时间: 2016-8-19 22:13

作者: Kas_ygx    时间: 2016-8-19 22:18

作者: Kas_ygx    时间: 2016-8-19 22:24

作者: Kas_ygx    时间: 2016-8-19 22:34

作者: Kas_ygx    时间: 2016-8-19 22:40

作者: Kas_ygx    时间: 2016-8-19 22:43

作者: Kas_ygx    时间: 2016-8-19 22:44

作者: 胡龙彬    时间: 2016-8-20 00:27
10000000代表-128的二进制 ,00000000代表0的二进制
作者: Kas_ygx    时间: 2016-8-20 23:26
每天顶顶贴,可以得到黑马币




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