发布网友 发布时间:2023-06-09 09:02
共3个回答
热心网友 时间:2024-04-15 03:01
C语言中的int型在不同的机器上位数不同,其表示的数范围也不同。鄙人假设你说的int型是32位。
C中的int型使用补码表示,也就是32位补码,最高位为符号位,1代表负,0代表正。一个int型变量存储形式为x = { 符号位(1bit), 数值位(31bit) }。
一个int型变量最大值即32bit补码能表示的正数最大值。1bit符号位为0,31bit数值位,每位可以有{0, 1}两种组合,31位可以有2^31种组合,最大正数即数值位全为1时能取到:
二进制(0;111,1111,1111,1111,1111,1111,1111,1111) = 7FFFFFFFH,按等比数列计算结果为 2^0 + 2^1 + 2^2 + ... + 2^30 = [1*(1-2^31)] / (1-2) = 2^31 - 1。
综上所述,32bit的int型表示的最大正整数既不是2^32,也不是2^31,是(2^31 - 1) = 2,147,483,648,大约21亿。
热心网友 时间:2024-04-15 03:02
int类型在内存中占4个字节,也就是用32位二进制表示。其中最高位为符号位,0表示正,1表示负。热心网友 时间:2024-04-15 03:02
错了。在C语言中,int类型存储的最大的数不是2^32,而是-2^31~(2^31)-1