黑马程序员技术交流社区

标题: 求解:byte类型的取值范围问题 [打印本页]

作者: 我要当大牛    时间: 2015-6-22 21:20
标题: 求解:byte类型的取值范围问题
byte在内存中占一个字节,8个bite位,第一位是符号位,取值范围不应该是从11111111~01111111吗,也就是-127到+127,为何是-128-127.
-128的二进制表现形式是什么?第一个位0或1是正负符号位啊
作者: 含笑    时间: 2015-6-22 21:35
byte 的内存中是2的7次方,而不是8次方的原因是因为:8位二进制中的最高位是符号位,不在计算之列,,所以剩下7位,也就是我们看到的2的7次方了
作者: 含笑    时间: 2015-6-22 21:37
不过我也想知道,为什么正的2的7次方还要减1 ,,是什么原因
作者: heisanheisan123    时间: 2015-6-22 21:41
。。。用最笨的方法,转换为十进制你就知道了
作者: 我要当大牛    时间: 2015-6-22 21:41
含笑 发表于 2015-6-22 21:37
不过我也想知道,为什么正的2的7次方还要减1 ,,是什么原因

正的2^7-1就是01111111啊,第一位是符号位. 我不理解的是为何-2^7不减一.
作者: 安安安    时间: 2015-6-22 21:46
当符号位为0时,00000000到01111111对应了数轴上从0到127这些数字
当符号位为1时,10000000到11111111对应了数轴上从-128到-1这些数字
作者: 我要当大牛    时间: 2015-6-22 21:47
-128  也就是10000000
反码            11111111
补码            10000000
第一位不应该是符号位,值应该是0才对啊
作者: Foundmoon    时间: 2015-6-22 21:50
在负数是1有两种属性
作者: 安安安    时间: 2015-6-22 21:54
安安安 发表于 2015-6-22 21:46
当符号位为0时,00000000到01111111对应了数轴上从0到127这些数字
当符号位为1时,10000000到11111111对应了 ...

或者这么想。
负数最小的是1000,0000     -128
取反+1:
取反:0111,1111               取反 = 127
+1:100000000                   127+1=128再加上符号就是-128
作者: 安安安    时间: 2015-6-22 21:57
如果说你是不理解为什么负数比整数多1个的话。
可以想正数有个0.
作者: bingyu    时间: 2015-6-22 22:06
:lol这么坑爹的牛角尖,新人就不要钻了吧,记住就好了,感觉万年难得用到
作者: 空城dream    时间: 2015-6-22 22:11
明天问问老师。。
作者: 繁华落幕    时间: 2015-6-22 22:21
含笑 发表于 2015-6-22 21:37
不过我也想知道,为什么正的2的7次方还要减1 ,,是什么原因

不减一的话  就直接超出范围了 它的范围就是-128 到  127 啊
作者: 符慢慢    时间: 2015-6-22 22:25
含笑 发表于 2015-6-22 21:37
不过我也想知道,为什么正的2的7次方还要减1 ,,是什么原因

应该是0  代替了  0000 0000    把

作者: 2297618472    时间: 2015-7-6 21:45
-128~127,,,,,,,,,,,




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