在C语言中为啥int型的取值范围是-32768~32767

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中为啥int型的取值范围是-32768~32767相关的知识,希望对你有一定的参考价值。

在C语言中为什么int型的取值范围是-32768~32767
而不是-32768~32768呢。

int型取值范围为-32768~32767是针对int型占2个字节来说的。

下面具体说明该范围的求法:
int型占2个字节,共16位。

int型能表示的最大正数为(最高位为符号位,正数的符号位为0):0111 1111 1111 1111
也即2^15-1=32767

int型能表示的最小负数为(最高位为符号位,负数的符号位为1):1000 0000 0000 0000(补码),而在计算机中负数是利用补码进行存储的,所以将1000 0000 0000 0000转换为源码就是1000 0000 0000 0000,也即-2^15=32768

所以int型取值范围为-32768~32767
参考技术A 1楼的正解,因为有个0,其实你自己用2进制算一下就明白了 参考技术B 因为有一个0本回答被提问者采纳 参考技术C 范围而已,没什么为什么

设C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为 如何计算的?

在C语言中,一个整形的变量是两个字节,那么就是16位,那么它的取值范围就是65536。,-32768~+32768 参考技术A int类型是有符号的,如果它在内存中占2个字节,则取值范围是:
-2^15~2^15-1,即-32768~32767。
参考技术B 这个跟语言关系不大,要属性内存定义,字节,字位,
最小的存储单元是字位,一个字位就在内存中占一个格子,可以存储1和0,来跟其他字位组成二进制数字,
一个字节是由8个字位组成,这都是前人定义,可以存储8位二进制数字,
一个int型,占两个一列,也就是2的16次方,
虽然有16位,但考虑数字有正负之分,又要拿出来一位去定义正负值,所以总体的存储范围还是65536个,值是从-32768到32767本回答被提问者采纳

以上是关于在C语言中为啥int型的取值范围是-32768~32767的主要内容,如果未能解决你的问题,请参考以下文章

为啥C语言中有符号整型变量的取值范围是-32768~32767,麻烦详细解释一下?

c语言中long型的65530转化为int型是多少啊?为啥啊?

C语言的int 为啥最小值是-32768

c语言中,int、float、char的取值范围是多少

c语言中int取值范围为16位指的是啥16位

c语言中int取值范围为16位指的是啥16位