int类型数据的存储

以下内容摘自谭浩强老师的C程序设计第五版。(3.2.3整型数据)

基本整型(int型)
编译系统分配给int型数据2个或4个字节(由具体的C编译系统自行决定)。如Turbo C 2.0位4为每一个整型数据分配2个字节(16个二进制位),而Visual C++位4为每一个整型数据分配4个字节(32位)。在存储单元的存储方式是:用整数的补码(complement)形式存放。一个正数的补码是此正数的二进制形式,如5 的二进制形式是101,如果用两个字节存放一个整数,则存放在存储单元中数据形式如图3.5所示:
int类型数据的存储
如果是一个负数,则应求出负数的补码。求负数的补码的方法是:先将次数的绝对值写成二进制形式,然后对其所有二进制按位取反,再加1.如-5的补码见图3.6.
在存放整数的存储单元中,最左面一位是用来表示符号的。如果该位为0,表示数值为正;如果该位为1,表示数值为负。
说明:如果给整型变量分配2个字节,则存储单元中能存放的最大值为0111111111111111,第1位为0代表正数,后面15位为全1,此数值是(215-1),即十进制数32767。最小值为1000000000000000,此数值是-215,即-32768.因此一个整型变量的值得范围是-32768~32767.超过此范围,就出现数值的“溢出”,输出的结果显然不正确。如果给整型变量分配4个字节(Visual C++),其能容纳的数值范围为-231~(231-1),即-2147483648~2147483647.