| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 732 人关注过本帖
标题:求助:有符号、5bits 的存储范围?
只看楼主 加入收藏
zb95
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2008-11-22
结帖率:94.44%
收藏
已结贴  问题点数:20 回复次数:8 
求助:有符号、5bits 的存储范围?
请问:有符号的5bits 可以存整数的范围是多少?
  
首先说明一下,这是在一个压缩文件中,需要用5bits的大小来存二进制数,我看说明里说,5bits的范围是-16到15。这里有点不懂。

正的就不说了,15是 0 1111

再说负的,5bit的最高位时符号位,则-16补码是 1 10000,这就6bit了,怎么回事?

[ 本帖最后由 zb95 于 2011-2-25 09:15 编辑 ]
搜索更多相关主题的帖子: 符号 二进制 压缩文件 
2011-02-25 09:14
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:7 
所有的数值都是以补码的形式来表示的,正数补码与原码相同,这个不提。

负数的补码方法是将该数绝对值的二进制形式按位取反再加1。

-16的绝对值为16,其二进制形式为 10000,按位取反为 01111,再加1为 10000 (这个就是-16的补码了),不是你说的 110000
2011-02-25 09:31
zb95
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2008-11-22
收藏
得分:0 
回复 2楼 godbless
我-16换的对着呢,前面那个符号位我用红色1表示了,这个不说了。关键是-16的补码是6bits啊,而大小只能是5bits
2011-02-25 09:36
zb95
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2008-11-22
收藏
得分:0 
回复 2楼 godbless
我在网上查的,说负数:符号位不变,然后该数绝对值的二进制形式按位取反再加1
2011-02-25 09:41
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
这样吧,反过来思考,那你说说5字节的时候 10000代表的数值是多少?
2011-02-25 09:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
对于
10000
因为符合位为1,所以它是负数,换成正数就是
各位取反 01111,尾部加一 10000(十进制的16)
也就是 二进制的10000 是 十进制的-16

第二种证明方法:
5bits的整数可以表达 2的5次方,也就是32,个不同的数值
既然最大值为15,那么最小值就是 -(32-15-1),即 -16

再来看看你说的“则-16补码是 1 10000”,错误在于,符号位是固定的,还能自动移位呀?^_^
2011-02-25 09:47
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
大哥,2楼我是这么说的..

"再加1为 10000 (这个就是-16的补码了),不是你说的 110000"

另外,你的计算负数的方法是错误的。

我在网上查的,说负数:符号位不变,然后该数绝对值的二进制形式按位取反再加1

反过来是 先减1再按位取反。不是你说的取反了再减1

[ 本帖最后由 godbless 于 2011-2-25 09:55 编辑 ]
2011-02-25 09:52
zb95
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2008-11-22
收藏
得分:0 
先谢谢各位了!我不是学计算机的,还有些不懂。。6楼大哥的第二种推法好像明白了一些。
但对于负数“符号位不变,其绝对值取反,加1”这句对不对?16是10000加上符号位(负)就是110000,取反101111,
加1,110000?我这样做错了?
2011-02-25 10:02
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:7 
换一种思维就是
       -1 表示 1 1111
       -2 表示 1 1110
       -3 表示 1 1101
        ...
      -15 表示 1 0001
      -16 表示 1 0000
这上面看出什么规律,右边先不看是表示负数(看成没有符号),而左边看成绝对值形式,右边数值不断减小,左边不断增大。
结论就是,虽然这里不能表示为16,但是可以表示-16

小代码,大智慧
2011-02-25 10:03
快速回复:求助:有符号、5bits 的存储范围?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032482 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved