c语言中整型数据的取值范围是怎么确定的???

如题所述

这个你要明白整型在计算机中的存储原理--补码形式存储,举一个类吧,short 所占位数是16位,即

其中要说明的是最大整数 (0111111111111111)计算方法

0111111111111111 即相当于16进制的7FFF,转换为10进制后是 32767

 

最大负数:1000000000000000,由于最高位是1,判断为负数,用求补码的原理,按位求反+1

即 反码 0111111111111111  补码 100000000000000   转换为10进制 32768  补回符号

-32768

 

其它的同样计算

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-08
对于无符号数,比较简单,根据占用的位数可以直接计算:
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)本回答被提问者采纳
第2个回答  2013-10-18
看存储空间和表示形式啊,补码还是原码。

c语言中整型数据的取值范围是怎么确定的???
以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...

c程序中基本整型的取值范围:-32768~32767是怎么算出来的?
答案明确: C语言中基本整型的取值范围-32768~32767是基于计算机二进制补码表示的。详细解释:1. 计算机中的二进制补码表示法:在计算机内部,整数通常使用二进制补码形式表示。正数和零采用原码表示,而负数则采用补码形式表示。补码允许我们在一个固定的位数内表示正数和负数,并允许它们共享相同的数值位来...

c程序中基本整型的取值范围:-32768~32767是怎么算出来的?
答案明确: C语言中基本整型的取值范围-32768~32767是基于计算机二进制补码表示的。详细解释:1. 计算机中的二进制补码表示法:在计算机内部,整数通常采用二进制补码形式表示。正数和零采用原码表示,而负数采用补码表示。在这种表示法中,-128到+127的范围可以精确表示。这是因为计算机使用固定数量的位来表...

C语言中整型数据的值域是怎么求出来的
如果整形占用2个字节(即16位),那么最小的数就是负的2的15次方,最大数就使2的15次方再减1。同理,如果整形占用4个字节(32位),那么最小的数就是负的2的31次方,最大数就使2的31次方再减1。为什么是15次方?因为存储符号(即正数还是负数)要占用1位。

为什么C语言中的整型取值范围是--32768~32767,是按什么规则规定,推理...
整型的宽度是一个字,也就是2个字节,16个二进制位,最高一位二进制位用来表示符号(正或负),那么剩下的15位来表示数值。01111111 11111111是32767,最大的正整数 00000000 00000001是1 00000000 00000000是0 11111111 11111111是-1(不是-32767)10000000 00000001是-32767(不是-1)10000000 00000000...

C语言里,整型范围(按两个字节算),是-32768到32767,如何计算来的
在有符号数中,最高数据位表示符号,1表示负数,0表示正数。如果规则只是这样,那么0的表示方式就有两种1000 0000 0000 0000和0000 0000 0000 0000,按照这种规则的话,-32767就是最小啦,但是0有两种表示方式,所以把1000 0000 0000 0000单独规定为 比-32767小1的整数,也就是-32768。另外位数不是...

C语言中 unsigne围是
C语言中的整型数据类型(int)具有一定的数值限制。它的取值范围是从-32768到32767,包括这两个极端值。然而,对于无符号整型(unsigned int)而言,情况有所不同。无符号整型的特性使得它不包含负数,因此其取值范围是从0开始,直至65535,这是一个严格的非负整数区间。这种差异在处理数值计算和存储时需...

C语言中有符号基本整型[signed]int 取值范围(-32768——32767)是怎么...
从0000000000000000到0111111111111111依旧表示0到32767,而负数需要把除符号位以后的部分取反加1,即-32767的补码为1000000000000001。补码系统中,范围是-23768~32767。因此,实际上,二进制的最小数确实是1111111111111111,只是二进制补码的最小值才是1000000000000000,而补码的1111111111111111是二进制值的-1。

[c语言]int的数的范围怎么求?整型常量数值的第一位是符号位而不表示大小...
不同的编译器对于整型数的范围有所不同!不过一般都是两个字节。比如单片机C51整型范围是两个字节!范围是-32768到32767!范围如何求呢?有符号数在计算机中用补码表示!最高位是符号位,0为正数,1为负数!正数的补码还是他本省,负数是求补码的方法是写出他对应的正数 比如-32768 对应的是32768 把...

...的范围-32768---32767是中的-32768是如何确定的
short 占用内存空间2个字节,也就是16个二进制位。表示负数时,最高位为符号位(负数的符号位为1),最小的负数为1000 0000 0000 0000 ,但是在计算机中负数是用补码(符号位不变,其余位取反,然后加1)表示的,人们规定1000 0000 0000 0000的补码为-32768 ,所以在补码系统中最小的是-32768 表...

相似回答