一.本文所涉及的内容(Contents)
二.背景(Contexts)
之前使用SQL把十进制的整数转换为三十六进制,SQL代码请参考:SQL Server 进制转换函数,其实它是基于二、八、十、十六进制转换的计算公式的,进制之间的转换是很基础的知识,但是我发现网络上没有一篇能把它说的清晰、简单、易懂的文章,所以我才写这篇文章的念头,希望能让你再也不用担心、害怕进制之间的转换了。
下面是二、八、十、十六进制之间关系的结构图:
(Figure1:进制关系结构图)
下文会分4个部分对这个图进行分解,针对每个部分会以图文的形式进行讲解:
(二、八、十六进制) → (十进制);(十进制) → (二、八、十六进制);(二进制) ↔ (八、十六进制);(八进制) ↔ (十六进制);
三.进制转换算法(Convert)
在数字后面加上不同的字母来表示不同的进位制。B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制。例如:(101011)B=(53)O=(43)D=(2B)H
(一) (二、八、十六进制) → (十进制)
(Figure2:其他进制转换为十进制)
二进制 → 十进制
方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
例:将二进制的(101011)B转换为十进制的步骤如下:
1. 第0位1x2^0 = 1;
2. 第1位1x2^1 = 2;
3. 第2位0x2^2 = 0;
4. 第3位1x2^3 = 8;
5. 第4位0x2^4 = 0;
6. 第5位1x2^5 = 32;
7. 读数,把结果值相加,1+2+0+8+0+32=43,即(101011)B=(43)D。
八进制 → 十进制
方法:八进制数从低位到高位(即从右往左)计算,第0位的权值是8的0次方,第1位的权值是8的1次方,第2位的权值是8的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
八进制就是逢8进1,八进制数采用 0~7这八数来表达一个数。