目录
1 整型的表现形式和存储形式
1.1 整型分类
包括: 基本整型 int短整型 short int长整型 long int双长整型 long long int C991.1 扩展类型
[signed] short [int] 有符号短整型unsigned short [int] 无符号 短整型[signed] int 有符号基本整型unsigned [int] 无符号 基本整型[signed] long [int] 有符号长整型unsigned long [int] 无符号 长整型[signed] long long [int] 有符号双长整型(C99新增)unsigned long long [int] 无符号 双长整型(C99新增)1.3 整数的表现形式
按极性:正数、负数和零。按进制:二进制、八进制、十进制、十六进制等。1.4整数的存储形式
在计算机内存中均是按照 二进制 补码 形式 存储 的。(1)原码二进制原码: 符号位 + 数值位最高位 为符号位正数:0负数:1(2)原码举例
正数的原码、反码、补码均相同(3)负数的反码、补码
反码:把负数原码的符号位保持不变,数值位按位求反。补码:把负数反码加1即得其补码。
2 各种进制及其转换
2.1 进制判断依据
前缀法:在C中,一般根据前缀确定进制。前缀 0(零) 八进制, 注意:数字0,非字母o前缀 0x 或 0X 十六进制默认 十进制2.2 十进制- - >二进制
2.3 八进制
数码及规则:0~7 必须 以 数字 0开头 ,逢八进一举例1:八进制数037代表的十进制数:举例2:十进制数22用八进制可表示为:026,验证:2.4 十六进制
数码及规则:由0~9、A~F(a~f)16个数码,逢十六进一。举例1:0x 1f 、0x1F、0X1f或0X1F,对应十进制数均为举例2:十进制数22可表示为:0x16 或 0X16 :
3 各整型类型及所占字节数
3.1 位和字节
位(bit):处理数据的 最小单位 ,只能0或1。字节(Byte):处理数据的 基本单位 ,通常系统中一个字节为8位。即 1 Byte=8 bit3.2 字节数的影响因素
影响因素:机器位数、C编译器等。举例:32位系统,Turbo C 环境中 int 2字节。32位系统,VC++6.0 环境中 int 4字节。3.3 各类型所占字节数
short 2字节int 2或4 字节long 4 字节long long 8 字节工具: sizeof 运算符求所在环境中各类型所占字节数sizeof(int) sizeof(long)3.4 各类型所占字节数
C标准未规定各类型所占具体字节数,仅规定各整型类型所占字节数满足如下关系:sizeof( short ) <= sizeof( int ) <= sizeof( long ) <= sizeof(long long )
4 综合案例
4.1 各整型输出控制符
%hd 以十进制 短整型%d 以十进制 基本整型%u 以十进制 无符号整型%ld 以十进制 长整型%lo 以八进制 长整型%lh 以十六进制 长整型4.2 案例
#include<stdio.h>
int main(void)
{
unsigned int un_a=2500000000;
long l_b=65539;
printf("In this system:\n");
printf("short has %d bytes.\n",sizeof(short));
printf("int has %d bytes.\n",sizeof(int));
printf("long has %d bytes.\n",sizeof(long));
printf("un_a = %u not %d\n",un_a,un_a);
printf("l_b = %ld not %hd\n",l_b,l_b);
return 0;
}