在C语言中,int类型的取值范围是有符号的32位整数,即-2,147,483,648到2,147,483,647。
这个范围是由int类型在32位系统上的存储大小决定的。具体来说,int类型在C语言中占4个字节,即32个二进制位。当表示正数时,最高位为符号位(符号位为0),最大的正数是231−1= 2147483647。当表示负数时,最高位为符号位(符号位为1),最小的负数是−231=−2147483648。在计算机中,负数是以补码的形式存储的,因此C语言规定1000 0000 0000 0000 0000 0000 0000 0000的补码为−2147483648。
需要注意的是,在不同的编译环境中,int类型变量的存储大小可能不同,但在32位和64位系统中,int类型通常都占用4个字节,即32个二进制位。因此,无论是在32位系统还是64位系统中,int类型的取值范围都是相同的,即-2,147,483,648到2,147,483,647。
此外,如果int类型被声明为无符号(使用unsigned int
关键字),则所有位都用于表示数值,取值范围将变为0到232−1=4294967295。然而,这超出了原始问题的范围,因此在这里不作进一步讨论。
简单来说,32位整数的表示方法是用二进制表示,最前面一位是符号位,用0表示正数,1表示负数,所以是31个1。