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

如题所述

    整型在你那个版本里是占用两个字节来存储的,每个字节8位,也就是16位的2进制,大家知道这样一个2进制数总是对应着一个正数。

    但是要表示正数和负数该怎么办,聪明的科学家在限制的2进制数位数的前提下采取了补码(算法及详细见补码)的形式来存储负数。

    第一位是符号位,也就是用它来表明这个数的符号(正数:0 负数:1)所以int型的最大正数为0111111111111111(15个1),其取值为2(15)-1,就是2的15次方减一,即32768-1=32767。

    最小负数:1000000000000000,按照补码的运算,得这个2进制数对应的十进制为-32768,这样也解释了为什么最大正数与最小负数的绝对值差1。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
int(整型)在你那个版本里是占用两个字节来存储的,每个字节8位,也就是16位的2进制,大家知道这样一个2进制数总是对应着一个正数,但是要表示正数和负数怎么办呢?聪明的科学家在限制的2进制数位数的前提下采取了补码(算法及详细见“补码”百度百科 http://baike.baidu.com/view/377340.htm)的形式来存储负数,第一位是符号位,也就是用它来表明这个数的符号(正数:0 负数:1)所以int型的最大正数为0111111111111111(15个1),其取值为2(15)-1,就是2的15次方减一,即32768-1=32767。最小负数:1000000000000000,按照补码的运算,得这个2进制数对应的十进制为-32768,这样也解释了为什么最大正数与最小负数的绝对值差1本回答被网友采纳
第2个回答  2013-05-29
首先我们需要了解补码的原理,因为在pc中一切数值都是用补码来表示的具体关于补码我就不解释了哈,如果对补码不是很了解的话可以参考这个链接: http://baike.baidu.com/view/377340.html?wtp=tt接下来解释一下为什么int型在C语言中的范围是-32768-32767int型在内存中占用2个字节来存储,一个字节是8bit,那么2个字节就是16bit,一个bit可以为0或者1,所以16bit就是由16个0或1组成的,而这个16位数就是一个补码对于正数来说,这个16位的补码可以表示的最大值为:0111111111111111(16个1),其取值为2(15)-1,就是2的15次方减一,即32768-1=32767对于负数来说,这个16位的补码可以表示的最小值为:1000000000000000,这个补码对应的十进制数就是-2(15),就是-2的15次方,即-32768
第3个回答  2019-07-08
“基本整型”是16位长度的整形,除去最高位的符号位,2^15=32768,因0是正数,从0开始到32767就完了。剩下的一半是复数。
扩展:无符号整型的范围是 0~65535,因不含复数部分,包含的正数范围扩大了一倍。
第4个回答  2020-02-15
正数:0111 1111 1111 1111 ,2的15次方是32768,0~32767为32768个数,所以正数最大是32767,那么对于负数来说呢,负数:1000 0000 0000 0000表示,最小负数就是-32768。所以范围:-32768~32767

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

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

c程序中基本整型的取值范围:-32768~32767是怎么算出来的?
在C程序中,基本整型数据类型通常占用两个字节,每个字节由8位组成,总共形成了16位的二进制数。为表示正负数,科学家们采用了补码编码策略,尽管位数有限。补码是一种特殊的方法,其中第一个位作为符号位,用来指示数值的正负。对于整型变量,最大正数的二进制表示为0111111111111111(15个1),通过计算2...

c程序中基本整型的取值范围:-32768~32767是怎么算出来的?
第一位是符号位,也就是用它来表明这个数的符号(正数:0 负数:1)所以int型的最大正数为0111111111111111(15个1),其取值为2(15)-1,就是2的15次方减一,即32768-1=32767。最小负数:1000000000000000,按照补码的运算,得这个2进制数对应的十进制为-32768,这样也解释了为什么最大正数与最小负...

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

在C语言中为什么int型的取值范围是-32768~32767
int型取值范围为-32768~32767是针对int型占2个字节来说的。下面具体说明该范围的求法:int型占2个字节,共16位。int型能表示的最大正数为(最高位为符号位,正数的符号位为0):0111 1111 1111 1111 也即2^15-1=32767 int型能表示的最小负数为(最高位为符号位,负数的符号位为1):1000 ...

C语言中short整型数据的范围-32768---32767是中的-32768是如何确定的...
0000 0000 0000 ,但是在计算机中负数是用补码(符号位不变,其余位取反,然后加1)表示的,人们规定1000 0000 0000 0000的补码为-32768 ,所以在补码系统中最小的是-32768 表示正数时,最高位为符号位(正数的符号位为0),最大的正数为0111 1111 1111 1111 即2^15 - 1 = 32767 ...

整型的取值范围是-32768~32767,32767我可以算得出来,但是-32768是如何算...
怎么会溢出呢?10000000 00000000 首先,第一位是1,是负数,这个容易理解。下面我们来算它的数值等于多少。先取反,得 01111111 11111111 然后加1,得 10000000 00000000 不就等于32768吗?加上负号,所以就是-32768了

c语言中32769输出的结果应该是什么,要过程
C中整型的范围是-32768-32767,是用二进制存放的。32767 就是 0111111111111111(16位),第一位是符号位,0代表正,1代表负,当输入32768时候,变成1000000000000000(-32768的补码),即输出-32768,所以当输入32769时,为1000000000000001,根据求补码的原则,求出这个数值为-32767。以此类推。

C语言中short代表短整型,数值范围为-32768---32767,以下程序为什么运行...
因为用补码存储的数据,-32768在二进制存储的是1000000000000000,减去1之后就是0111111111111111,变成十进制就是32767

相似回答