c语言中整型数据的取值范围是怎么确定的???
发布网友
发布时间:2022-04-16 19:02
我来回答
共3个回答
热心网友
时间:2022-04-16 20:31
这个你要明白整型在计算机中的存储原理--补码形式存储,举一个类吧,short 所占位数是16位,即
其中要说明的是最大整数 (0111111111111111)计算方法
0111111111111111 即相当于16进制的7FFF,转换为10进制后是 32767
最大负数:1000000000000000,由于最高位是1,判断为负数,用求补码的原理,按位求反+1
即 反码 0111111111111111 补码 100000000000000 转换为10进制 32768 补回符号
-32768
其它的同样计算
热心网友
时间:2022-04-16 21:49
对于无符号数,比较简单,根据占用的位数可以直接计算:
unsigned short 16位 0~2的16次方-1(即65535)
unsigned int 16位 0~2的16次方-1(即65535)
unsigned long 32位 0~2的32次方-1(即4294967295)
对于有符号数,由于符号位占用一位,并且负数要用补码表示
以8位数据为例:2进制的11111111表示-1,10000000表示-128,所以负数范围-128~-1;2进制00000000表示0,01111111表示127,所以正数范围0~127。合起来就是-128~127,找一下规律发现是- 2的(8-1)次方~2的(8-1)次方-1,那么就可以得到任何位数的范围:
short 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)
int 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)
long 32位 - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483648)
热心网友
时间:2022-04-16 23:24
看存储空间和表示形式啊,补码还是原码。