鱼C论坛

 找回密码
 立即注册
查看: 2410|回复: 12

[已解决]整型数据值的取值范围

[复制链接]
发表于 2017-9-14 12:14:52 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int,unsigned int,short,unsigned short,long,long long 这些数据值的取值范围是怎么求的?
最佳答案
2017-9-16 19:05:42
Ccoding 发表于 2017-9-16 18:33
解释得好清楚,看完秒懂

别忘记“最佳答案”哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-14 13:02:10 | 显示全部楼层


二进制数在计算机内存储的是其补码
对于有符号数,正数的补码和本身一样,负数的补码是本身的数字位取反后加1
比如:
1=(0001)补=(0001)
-1=(1001)补=(1111)
计算机存储-1就是存储的1111
因此
当int表示范围为16位时,可以表示的最大负数为:
10000...0000(后面有15个0)
相当于-0
但这其实是-32768=110000...0000(第一位符号位,后面有15个0)的补码表示
可以理解为16位的int足可以表示-32768的补码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-14 13:40:58 | 显示全部楼层
首先你要知道在你的系统里这些数据类型是占多少字节的,一般来说int是4Bytes,那就是2^(4*8)=2^32(1B=8b,就是一个字节是8个位的意思),又因为int是有符号位的,所以对半:-2147483648 ~ +2147483647(0算在了正的这边);unsigned int就是无符号整数:0 ~ 4294967295。
就是要搞清楚数据类型对应的字节数,参考文章:http://bbs.fishc.com/forum.php?m ... peid%26typeid%3D584
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-14 23:43:51 From FishC Mobile | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-14 23:44:36 From FishC Mobile | 显示全部楼层
ba21 发表于 2017-9-14 13:02
二进制数在计算机内存储的是其补码
对于有符号数,正数的补码和本身一样,负数的补码是本身的数字位取 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-14 23:57:30 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-9-14 13:40
首先你要知道在你的系统里这些数据类型是占多少字节的,一般来说int是4Bytes,那就是2^(4*8)=2^32(1B=8b, ...

IMG_20170914_235633.jpg IMG_20170914_235425.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-15 09:38:59 | 显示全部楼层

这个就是我说的int是有符号整形,所以要对半开呀,(2^32)/ 2 = 2^31,一般为正(包括0,所以要-1),一半为负,就变成了正整数范围:0—(2^31)-1,负整数范围:-(2^31)—0(不包括0)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-16 18:32:01 From FishC Mobile | 显示全部楼层
本帖最后由 Ccoding 于 2017-9-16 18:33 编辑

非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-16 18:33:10 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-9-15 09:38
这个就是我说的int是有符号整形,所以要对半开呀,(2^32)/ 2 = 2^31,一般为正(包括0,所以要-1),一 ...

解释得好清楚,看完秒懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-16 19:05:42 | 显示全部楼层    本楼为最佳答案   
Ccoding 发表于 2017-9-16 18:33
解释得好清楚,看完秒懂

别忘记“最佳答案”哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-16 23:16:22 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-9-16 19:05
别忘记“最佳答案”哦

手机版本找不到最佳答案。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-17 19:25:08 From FishC Mobile | 显示全部楼层
Ccoding 发表于 2017-9-16 23:16
手机版本找不到最佳答案。。。

没关系,以后可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-13 19:01:28 From FishC Mobile | 显示全部楼层
ba21 发表于 2017-9-14 13:02
二进制数在计算机内存储的是其补码
对于有符号数,正数的补码和本身一样,负数的补码是本身的数字位取 ...

感谢你的回答,我现在回来看这些答案很有收获。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 13:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表