C语言中整型“取值范围”的问题

如图所示,
问①:“long 4字节(32位)取值范围-2的31次方~(2的31次方-1)”中,
为什么要-2的“31”次方,而不是“32”次方呢?
问②,“unsigned long 4字节(32位)取值范围0~(2的32次方-1)”中,
为什么要2的“32”次方,而不是“31”次方呢?

无符号和有符号整型其实位数是一样的,都是32位,
无符号的,32位都可以用作计数,可以表示2的32次方个数,所以取值范围是2的32次方。
有符号的,第一位用于记录数字符号的正负,还剩下31位,所以用31次方。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-21
不带unsigned,那么左边第一个bit是符号位,所以只剩下31位了。
带了unsigned就是没有符号,也就是不表示负数,所有位数都是数值位。自然就是32位。
第2个回答  2013-07-21
好好看看书,这些东西要自己明白,不然被别人告诉你了你也记不住的

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

关于C语言中整型变量取值范围的问题
其实C语言标准并没有规定整型变量在内存中分配几个字节,根据不同的编译器是不同的,例如在visual c++6.0中就为整型变量分配4个字节的内存空间。以两个字节为例,最大值的二进制为0111 1111 1111 1111,可以计算一下这个二进制的值,它实际上等于1000 0000 0000 0000-1,也就是2^15-1。对于最...

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

C语言中整形的取值范围问题
正数是对的,负数错了,你写的那个等于负零。应该是:1111 1111 1111 1111到0111 1111 1111 1111

关于c语言整型常量的范围问题
1、测试结果不正常 2、以下内容来自《C Primer Plus (第6版)》,供您参考 3、C语言中有类似的机制,int偷偷转变成long,或者float转变成double,但并不是一定的。编程时请严格按照数据类型规定的容量范围使用。

C语言中整型的问题。
4字节(32位)取值范围0~(2的32次方-1)”中,为什么要2的“32”次方,而不是“31”次方呢?答:无符号整型是没有符号位的,但也不能表示负数,因为最高位的符号位只能表示数字,这样我们在计算范围时步需要考虑符号位。但为什么是2的32资方-1而不是2的32资方呢。因为在计算无符号的范围时我们要将...

为什么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~32...
C语言没有具体规定各类数据所占内存的字节数,只要求long型数据长于int型,short型短于int 型,是由计算机系统自行决定,有的short和 int都是16位,long 是32位,有的short为16位,long和int都是32位,通常是long 为32位,short为16位,而int可以是16位,也可以是32位,这两个都是用于存储整数....

C语言为什么整型int计算范围不对呢?
c语言int类型的值的范围这个也对,也不对。1、说对,是因为在16位的计算机上这个是对的。2、说不对,是因为不同的编译环境不同,导致的结果都不同。3、一般在c语言编程中通过limits.h头文件中的INT_MAX或者INT_MIN来表示

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

相似回答