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