C 语言中定义有符号整型:signed int x; 由于 signed 可以省略,所以 int x; 也是可以定义 有符号整型变量 x C 语言中,有符号数与无符号数主要是由于是高位是否代表符号(正、负数)来决定的。有 符号数是最高位(二进制位)代表符号,1 代表是负数,0 代表是正数,不管是正数还是负 数都是以补码的形式存储与使用的。 (1)正数的补码:与原码相同。例如,+9 的补码是 00001001。 (2)负数的补码:符号位为 1,其余位为该数绝对值的原码按位取反;然后整个数加 1。 例如,-7 的补码:因为是负数,则符号位为“1”,整个为 10000111;其余 7 位为-7 的绝对值 +7 的原码 0000111 按位取反为 1111000;再加 1,所以-7 的补码是 11111001。 整型数据即整数。 整型数据的分类 整型数据的一般分类如下: ? ? ? ? 基本型:类型说明符为 int,在内存中占 2 个字节。 短整型:类型说明符为 short int 或 short。所占字节和取值范围均与基本型相同。 长整型:类型说明符为 long int 或 long,在内存中占 4 个字节。 无符号型:类型说明符为 unsigned。 无符号型又可与上述三种类型匹配而构成: ? ? ? 无符号基本型:类型说明符为 unsigned int 或 unsigned。 无符号短整型:类型说明符为 unsigned short。 无符号长整型:类型说明符为 unsigned long。 下表列出了 C 语言中各类整型数据所分配的内存字节数及数的表示范围。 类型说明符 数的范围 字节数 int unsigned int short int -32768~32767,即 -215~(215-1) 0~65535,即 0~(216-1) -32768~32767,即 -215~(215-1) 2 2 2 2 unsigned short int 0~65535,即 0~(216-1) long int unsigned long -2147483648~2147483647,即 -231~(231-1) 4 0~4294967295,即 0~(232-1) 4 整型数据在内存中的存放形式 如果定义了一个整型变量 i: inti; i=10; 数值是以补码表示的: ? ? 正数的补码和原码相同; 负数的补码:将该数的绝对值的二进制形式按位取反再加 1。 例如:求-10 的补码: 由此可知,左面的第一位是表示符号的。 各种无符号整型数据所占的内存空间字节数与相应的有符号类型量相同。 但由于省去了符号 位,故不能表示负数。