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语言int的取值范围

C语言各个数据类型取值范围

c程序中基本整型的取值范围:-32768~32767是怎么算出来的?

C语言中有符号基本整型[signed]int 取值范围(-32768——32767)是怎么算出来的?

C语言各个数据类型取值范围

C语言中怎么计算一个类型的取值范围?如 char 用程序算