進位快速轉換

十進位 -> 其他進位

一般做法

以10->8 为例, 我要把 771 转为 8 进制

771 / 8 = 96 ... 3
96  / 8 = 12 ... 0
12  / 8 = 1  ... 4
1   / 8 = 0  ... 1

将得到的余数反过来即可得到相应进制, 所以 771_{10}=1403_{8}.

快速做法

我现在要把 771 转换为 2 进制, 先找到离 771 最近的小于 771 的二次方, 这里是 512, 然后 771-=512=259, 259 离 256 最近…

\because771=512+256+2+1=2^9+2^8+2^1+2^0
\therefore771_{10}=11'0000'0011_{2}

使用这种方法要注意, 因为是从 $2^0$ 开始, 所以若包含 2^x 实际上是从右数第 x+1 位, 不要掉到坑里去!

其他進位 -> 十進位

举个例子, 我要把 23456(8) 转为十进制, 只需要把每位乘以对应的进制数次方就可以了.

\because 711=512+256+2+1 = 2^9 + 2^8 + 2^1 + 2^0
\therefore 23456_6=10030_{10}

其他進位 <-> 其他進位

2、8、16 均可脱离十进制快速互转. 具体原理可见下表:

16 进制8 进制2 进制
000000
110001
220010
330011
440100
550101
660110
770111
81000
91001
A1010
B1011
C1100
D1101
E1110
F1111
16 – 2, 8 – 2

由此可见, 16进制 <-> 二进制, 八进制 <-> 二进制 都是可以行的, 只要从右到左按位转换就可以!

7    | A    | B    | D
0111 | 1010 | 1011 | 1101
---
7ABD(16) = 0111101010111101(2)
5   | 6   | 1
101 | 110 | 001
---
561(8) = 101110001(2)
0101 | 1010 | 1111 | 0001
5    | A    | F    | 1
---
0101101011110001(2) = 5AF1(16)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。