NOIP初赛指南/进制与编码
< NOIP初赛指南
在 NOIP 初赛中,往往有涉及进制和编码的题目,如将4种进制的数放在一起比大小。
所以,学习进制和编码,是十分重要的事。
进制
编辑十进制转二进制
编辑十进制转二进制要分两部分:整数部分和小数部分。
整数部分用短除法,而小数部分用乘法。
如图,通过不断地除以2后取余,最后到1为止。需要注意的是,这里必须要倒着写,如11的二进制为1011,而并非1101。
小数部分,则通过不断乘2,再取整数并将其减去,直到乘到结果为1(需要指明的是,不是所有数最终都能乘到结果为1。如图:
方法同样适用于十进制转八进制和十六进制。
二进制、八进制、十六进制的互相转换
编辑相比于将十进制转换为二进制、八进制和十六进制,二进制、八进制和十六进制的互相转换更为简单。这是因为它们都可以与二进制相对应。这里举例将(326.27)8转换为二进制:
如图,我们可以看到,八进制的一位对应二进制的三位。
事实上,十六进制的一位对应二进制的四位。
八进制 | 二进制 |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
十六进制 | 二进制 |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
提醒:在将二进制转换为八进制或十六进制时,如有位数不够的,必须往两边补0,不能往中间补。
其他进制转十进制
编辑方法:按权展开求和。(ABC)x=(A*x2+B*x1+C*x0)10
例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(11.25)10
(7AF)16=7×162+10×161+15×160=1967
编码
编辑一般,我们常常会用 Unicode 编码或者 ASCII 码进行存储。
Unicode
编辑这里就去看链接吧。
ASCII
编辑所谓的 ASCII 码,就是美国信息交换标准码(American Standard Code for Information Interchange)。它可以用于所有拉丁字母的表示,但是不能表示汉字。
在 ASCII 吗中,“0”为48,“A”为65,“a”为97。其他字符以此类推。