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
开头。
十进制 | 八进制 | 十六进制 | 十进制 | 八进制 | 十六进制 |
---|---|---|---|---|---|
0 |
0 |
0 |
16 |
020 |
0x10 |
1 |
01 |
0x1 |
17 |
021 |
0x11 |
2 |
02 |
0x2 |
18 |
022 |
0x12 |
3 |
03 |
0x3 |
19 |
023 |
0x13 |
4 |
04 |
0x4 |
20 |
024 |
0x14 |
5 |
05 |
0x5 |
21 |
025 |
0x15 |
6 |
06 |
0x6 |
22 |
026 |
0x16 |
7 |
07 |
0x7 |
23 |
027 |
0x17 |
8 |
010 |
0x8 |
24 |
030 |
0x18 |
9 |
011 |
0x9 |
25 |
031 |
0x19 |
10 |
012 |
0xa |
26 |
032 |
0x1a |
11 |
013 |
0xb |
27 |
033 |
0x1b |
12 |
014 |
0xc |
28 |
034 |
0x1c |
13 |
015 |
0xd |
29 |
035 |
0x1d |
14 |
016 |
0xe |
30 |
036 |
0x1e |
15 |
017 |
0xf |
31 |
037 |
0x1f |
- 试一试
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);
练习
进制转换器
网友评论