c语言中整型数据的取值范围是怎么确定的???
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中整型数据的取值范围是怎么确定的???相关的知识,希望对你有一定的参考价值。
这个你要明白整型在计算机中的存储原理--补码形式存储,举一个类吧,short 所占位数是16位,即
其中要说明的是最大整数 (0111111111111111)计算方法
0111111111111111 即相当于16进制的7FFF,转换为10进制后是 32767
最大负数:1000000000000000,由于最高位是1,判断为负数,用求补码的原理,按位求反+1
即 反码 0111111111111111 补码 100000000000000 转换为10进制 32768 补回符号
-32768
其它的同样计算
参考技术A 对于无符号数,比较简单,根据占用的位数可以直接计算: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)本回答被提问者采纳 参考技术B 看存储空间和表示形式啊,补码还是原码。
以上是关于c语言中整型数据的取值范围是怎么确定的???的主要内容,如果未能解决你的问题,请参考以下文章
c程序中基本整型的取值范围:-32768~32767是怎么算出来的?