c语言中基本整型int占据两个字节,取值范围-2^15--2^15-1(-32768--32767)?就是-2^15是怎么得来的?

最好把具体步骤写出来?
2025-03-01 20:50:03
推荐回答(2个)
回答1:

在内存中,正数的原码和补码是一样的,而负数的补码为其绝对值的原码按位取反后加1.

对于补码是0000000000000000时,对应的值为0

补码范围是0000000000000001-0111111111111111,对应的值为全部正整数,即1-2^15-1.

补码范围是1000000000000001-1111111111111111,对应的原码是100000000000001-111111111111111,值的范围是-1~-(2^15-1)。

还有一个数是100000000000000,它不能使用补码计算公式进行计算的。是计算机内部直接用它来表示-2^15

回答2:

1、谁告诉你int类型一定占用2个字节的??
C99标准规定 Long型占用4个字节,Short占用2个字节,而Int类型的规定是大于等于Short,小于等于Long,所以Int类型根据不同的编译器,即有可能是4个字节,也有可能是2个字节
2、在来说取值范围
一个字节有8位,而每一位有0、1两种状态
如果是两个位,就有
0 0,0 1,1 0,1 1;一共4种状态,对应 0 1 2 3 ,也就是2^2
如果是三个位,就有
0 0 0,0 0 1,.........,具体我就不列举,一共8种,也就是2^3
所以,如果是1个字节,8位,就是2^8 = 256
,如果是2个字节,16位,就是2^16 = 65536
如果把最高位0看作正,1看作负,那么2个字节的取值范围就是你所知道的范围了