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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

欢迎各位老师,学长学姐来指导

33 个回复

倒序浏览
今天看资料时有一个疑惑,挥之不去,零基础导致想破脑袋也没想通,所以在此请教各位前辈,望不吝指导:
话说整数型数据类型 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呢,另外一个又代表什么意思呢?
回复 使用道具 举报
我是7/26重庆校区基础班的学员
回复 使用道具 举报
没人,哎
回复 使用道具 举报
回复 使用道具 举报
其实核心就是一个二进制算法的问题
二进制算法很简单。除二余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
回复 使用道具 举报
自己顶贴,可以赚黑马币
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
最高位是0的是正数,最高位是1的是负数
回复 使用道具 举报
10000000代表-128
回复 使用道具 举报
人气不是很旺啊,大家快来帮忙解答疑惑
回复 使用道具 举报
1byte = 8位
负数存储的是补码。
而最高位表示符号位,1表示负数,0表示正数。
[0000 0000]这个就是表示0
[0111 1111]这个表示127
127再加一就[1000 0000]这就越界了。
负数求补码:正数的反码+1;
所以-128的表示:
回复 使用道具 举报
尴尬。。。怎么就跳了
-128表示:
   128原码:[1000 0000]
   128反码:[0111 1111]
     再加1 :[1000 0000]
又回来了。
8位不好理解,你增加到16位就比较好理解了 。
回复 使用道具 举报
byte字节之所以是 -128——127,是因为,0的存在。其中1000 0000代表的是-128,因为它是以补码的形式存在的,计算机之所以这样设计是便于计算。对于正数,他就是以原码形式存在,所以0是0000 0000
回复 使用道具 举报
最高位是符号位,0表示正数,1表示负数
回复 使用道具 举报
1byte = 8位
即【0000 0000】 八位2进制   首位代表正负  0 为正  1为负   2的7方 为128  因为在非负数中0占一位 所以整数到127
回复 使用道具 举报
127   -128
回复 使用道具 举报
talons 发表于 2016-8-17 21:37
尴尬。。。怎么就跳了
-128表示:
   128原码:[1000 0000]

多谢指点,很感谢
回复 使用道具 举报
各位前辈的解答非常的详细和有用,再次感谢大家的帮助
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马