首页
社区
课程
招聘
[旧帖] [求助]关于整数取值范围的小问题 0.00雪花
发表于: 2013-10-9 17:05 1850

[旧帖] [求助]关于整数取值范围的小问题 0.00雪花

2013-10-9 17:05
1850
在《C++反汇编与逆向分析技术揭秘》的第二章里面,有这么一句话:“有符号整数的取值范围要比无符号整数取值范围少1位。”
      的的确确是如此,因为有一位当成了符号位。但是在取值范围是:-2 147 483 648 ~ 2 147 483 647,怎么算也是跟无符号整数的取值范围是取了一样多的范围啊。。。小白这点想不通,由于还是临时会员,只能在这个版块求助了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有符号整数和无符号整数所占的内存大小是一样的,例如32位下都是4字节,这4字节按照位的排列,每一个都表示一个数字,所以有符号整数和无符号整数表示的数的个数是一样多的,所以取值范围严格意义上来说也是一样的。我想作者应该是想表达“用来表示数字位的有符号整数的个数要比无符号整数的个数少1位”
2013-10-9 17:59
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
。。。我咋感觉刚好相反呢,按照有符号整数的根数跟无符号整数的个数刚好一样啊。作者说不一样,是不是因为存在2个0呢?
2013-10-9 21:25
0
雪    币: 1392
活跃值: (5142)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
不存在2个0这一说。
少一位意思是 比如BYTE 一共八位
有符号 最高位表示符号 0正1负  剩下7位       一共有2的7次方也就是128个数 从0到127 最高位变为1后也是到-127  但是这里会出现 10000000和00000000 这是两个0吗? 不是 后面这个才是0 前面那个是-128 所以范围是 -128到127 至于为啥10000000是-128 貌似是计算的时候补码计算恰好是这样的。

无符号 一共有2的8次方也就是256个数。从0到255

少一位(BYTE)的意思是 无符号 用8位表示数据大小。而有符号用7位表示数据大小
2013-10-10 10:58
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
貌似你这样的解释就很合理了,谢谢你~。。。。不过我还是觉得存在2个0。。。只不过人为定义了一下
2013-10-10 11:40
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有点钻牛角尖了吧
2013-10-10 12:20
0
游客
登录 | 注册 方可回帖
返回
//