int 形的整数的取值范围为什么是-32768-32767而不是-32767-32767

请讲解详细点,谢谢!

对于有符号的整数,用补码表示的话,比如说8位(即char,BYTE类型的),最高位是符号位,下面7位用来表示数据.
那么,表示正数的话,表示的范围为00000001-01111111,也就是说,8位表示正数,最高只能是127,最高是符号位嘛,是不能用的.
表示0:00000000
下面表示负数,相信你应该知道表示的方法,即补码是原码取反加1,听起来有点复杂,算起来更不简单,其实是这样的:CPU的加减法运算,其实是循环进行加减的,即当其由00000000加到11111111时,如果再加1,就又会为00000000了,只不过溢出寄存器会置位的.而当其由00000001减1,即为00000000,如果再减1,就会为11111111,这是什么?不就是-1吗?其实就是说:以十进制数来说,1-1=0,0-1=-1,这是显然的,再减?那就减吧.那么,从00000000可以减到什么时候呢?当然是不能与正数的补码重合就行了,所以可以从11111111-10000000,即从-1到-128.
所以,整个范围是-128~127.16位的,32位的,同理
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-07
int数据占用2个字节,范围0xFFFF-OX0000,一下表示的是计算机补码
计算机数据是用补码存取的,ox7fff表示最大的正数为:2^15-1=3267
0的补码为0x0000,从这里可以发现还有一个数的表示:0x8000,
计算机是这么存储的:10***0(15个0),你会认为是-0(原码的表示法是对的),可是补码表示却是-128,那么和你来分析一下,补码存储后,显示出来会经过计算机的处理,处理步骤如下:
0x8000首先求反为》0xffff,
在经过自加一为》0x8000,这样,你一定以为是0了,注意这里的符号位不变,进位后存储在特殊功能寄存器的进位标志位(你会汇编语言就能理解的,比如单片机学习就理解了)
我的回答是,你错了,如果你理解汇编语言,就会知道,cpu的特殊寄存器中有进位标志位,那个位为1,所以补码0x8000表示的数正是-2^15=-32768
第2个回答  2011-03-07
0xFFFF是最大十六位数 ,由于最高为符号所以最大的正数为0x7FFF,最高位为0,0x7FFF = 32767。 如果为负数,则最高位为1,对应的最小负数0x8000,去掉最高符号位,变成0x0,取反得到0xFFFF,0xFFFF = 32768,所以为-32768 负数是以补码存放的,所以有一个取反的过程 。

参考资料:http://www.iterc.com

int 形的整数的取值范围为什么是-32768-32767而不是-32767-32767
所以,整个范围是-128~127.16位的,32位的,同理

为什么int是从-32768到32767而不是从-32767到32767呢?
为什么int的范围是从-32768到32767而不是从-32767到32768呢?明确答案:这是因为计算机采用二进制表示整数,而int类型的范围是由其位数决定的。对于标准的16位有符号整数,其范围就是从-32768到32767。这个范围的设定是基于二进制数的表示方法以及其位数的限制。详细解释:1. 二进制数的特性:计算机内部所...

为什么int是从-32768到32767而不是从-32767到32767呢?
所以负数的表示范围是从-32768到-1,正数不变还是0到32767,合起来就是-32768到32767了。

为什么int是从-32768到32767而不是从-32767到32767呢?
计算机是用2进制表示的所以int是从-32768到32767而不是从-32767到32767

...的取值范围是-32768到32767而不是-32767到32767那么-32768在内存中...
整型变量取值范围为-32768到32767,而非-32767至32767,原因在于硬件技术的限制。以-32768为例,它在十六进制下表示为8000,转换为二进制为1000000000000000。此数值采用的是32位表示法,最高位作为符号位,用于指示正负。现今计算机内部运算采用32位计算,故-32767除非特定条件下,否则不会直接出现,因为它会...

为什么int是从-32768到32767而不是从-32767到32767呢?
-32768的对应相反数是32768,它的二进制是1000000000000000,反码(按位取反)后是0111111111111111,再+1后变成1000000000000000。-32767的对应相反数是32767,它的二进制是0111111111111111,反码(按位取反)后是1000000000000000,再+1后变成1000000000000001。...-1的对应相反数是1,,它的二进制是...

为什么int的取值范围是-32768~32767,真正懂的回答下,不懂就不要乱答...
int 的取值范围和开发环境平台有关,不一定是 -32768~32767 之间。只有在16位的环境平台上才是 -32768~32767 之间,之所以是 -32768~32767 之间的原因是:计算机使用的是二进制,那么16位环境平台下的取值范围则为 2 的 16 次方 为 32768,由于还要包括 负数 和 0,所以取值范围则为 -32768~...

...的取值范围是-32768到32767而不是-32767到32767那么-32768在内存中...
计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一。这种结果用-32768代替了“-0”,可以使符号位能与有效值部分一起参加运算,从而简化运算规则;同时使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。用补码1000 0000作为十进制数-32768在内存中的...

...可以精确-32768~32767范围,为什么是-32768呢?
在程序设计中,整型数据Integer的范围是-32768至32767。这一范围的设定与计算机存储数据的方式密切相关。计算机内部使用补码表示整数,这是一种二进制编码方式,能够方便地执行加减法运算。每个整型数据占用4个字节,即32位。在补码表示下,最高位作为符号位,1表示负数,0表示正数。对于4字节整数,可以表示...

基本整型的最大范围为为什么是32767,而不是32768
int 型范围为-32768 ~ 32767 因为是用补码表示数,因此0只有一个(而不像原码那样有正0和负0),因此负数就可以多表示一个数-32768 之所以是-32768 ~ 32767是因为int 型占16位,除了一个符号位还剩15位,2的15次方就是32768了,再除去0,所以正数能表示到32767,而刚才说过不用表示 -0 ,所以负数能...

相似回答