C语言初阶——6.进制
1. 进制
百度百科:
进制也就是进位计数制,是人为定义的带进位的计数方法,对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制是逢二进一,以此类推,x进制就是逢x进位。
- 基数与权
基数是计数值制所用到的数字符号的个数,在基数为R的计数制中包含0 1 2…R-1,共R个数字符号。进位规律是逢R进一,称为R进制位权是指在一种进位计数制表示的数中,用来表示不同数位上数值的大小的一个固定常数,不同的数位有不同的位权,某一个数位的数值等于这一位的数字符号乘上该数的位权。例如:
2. 转换
十进制转换成R进制用短除法,电脑的计算器通常具有进制转化功能。
3. 运算
NO. | 进制 | 数码 | 进位条件 |
---|---|---|---|
1 | 二进制 | 0 、1 |
逢二进一 |
2 | 八进制 | 0 、1 、2 、3 、4 、5 、6 、7 |
逢八进一 |
3 | 十进制 | 0 、1 、2 、3 、4 、5 、6 、7 、8 、9 |
逢十进一 |
4 | 十六进制 | 0 、1 、2 、3 、4 、5 、6 、7 、8 、9 、A 、B 、C 、D 、E 、F |
逢十六进一 |
ASCII码就是被普遍采用的一个英文字符信息编码方案,它用8位二进制数表示各种字母和符号
- 计算机为什么使用二进制、八进制、十六进制?
- 实现容易:电路中的状态容易表示0和1(开与关、亮与灭、高与低)。
- 可靠性高:0和1两个数字传输和处理不易出错。
- 运算简单:与十进制数相比,二进制数的运算规则要简单。
- 适合逻辑:0和1与逻辑代数中的真和假相吻合。
- 易于转换:二进制与十进制数易于互相转换。
由于二进制数据的基数较小,所以二进制数据的书写和阅读不方便。
每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。
由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数。
-
其他进制(7进制、60进制、24进制、30进制、365进制)
-
中国古代的十六进制?–半斤八两
4. C语言中的进制
4.1 进制常量表示
C语言不能直接表示二进制常量。八进制数字以0
开头,十六进制数字以0x
或0X
开头。
- 试一试
int a = 08;
int b = 09;
printf("%o%o",a,b);
4.2 输入输入
4.2.1 进制打印
打印32以内的十进制、八进制、十六进制对应表。
for(int i=0;i<32;++i){
printf("%d\t%#o\t%#x\n",i,i,i);
}
进制的输出其实与字符输出是一样的,根据占位符的不同输出不同。
char a = 'a';
printf("%c\t%d\t%#o\t%#x\n",a,a,a);
4.2.1 输入进制数据
int n;
scanf("%o",&n);
printf("%d\n",n);
scanf("%x",&n);
printf("%d\n",n);
scanf("%d",&n);
printf("%d\n",n);
scanf("%i",&n);
printf("%d\n",n);