目录
1
整型的表现形式和存储形式
1.1
整型分类
包括: 基本整型 int
短整型 short int
长整型 long int
双长整型 long long int C99
1.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可表示为:0x
16
或 0X16 :
3
各整型类型及所占字节数
3.1
位和字节
位(bit):处理数据的
最小单位
,只能0或1。
字节(Byte):处理数据的
基本单位
,通常系统中一个字节为8位。即 1 Byte=8 bit
3.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;
}
版权声明:本文为weixin_46039719原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。