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。其他字符以此类推。