一、什么是二进制、八进制、十六进制?
-
二进制(Binary):
- 是基于基数2的计数系统,只有两个符号:0和1。
- 每前进一位,数值翻倍,即遵循“逢二进一”的原则。
- 在计算机硬件和软件底层,二进制是最基本的形式,因为电子器件(如晶体管和逻辑门)能够简单地通过开(1)和关(0)状态来存储和处理信息。
-
八进制(Octal):
- 基数为8的计数系统,使用0到7共8个数字表示数值。
- 按照“逢八进一”的规则进行计数和进位。
- 八进制常用于简化对二进制数的表示和记忆,因为在二进制中每3位可以对应一个八进制数,例如二进制数
1011
对应的八进制数是13
。
-
十六进制(Hexadecimal 或 Hex):
- 基数为16的计数系统,除了使用0-9这些阿拉伯数字外,还引入了A-F(或a-f)这六个字母分别代表10至15的值。
- 十六进制遵循“逢十六进一”的进位规则。
- 十六进制尤其适合表示二进制数,因为每4位二进制数对应一个十六进制数,极大地简化了长二进制串的书写和阅读,例如二进制数
10101010
对应的十六进制数是AA
。
二、进制之间如何转换?
-
十进制转其他进制:
-
十进制转二进制:
- 整数部分:使用“除2取余,逆序排列”的方法。将十进制数反复除以2,每次得到的余数按照从下往上的顺序排列即为二进制数。
- 小数部分:使用“乘2取整,顺序排列”的方法。将小数部分乘以2,每次得到的整数部分按顺序排列,直到乘积足够小(达到精度要求或小数部分变为0)。
-
十进制转八进制/十六进制:
- 整数部分:同样采取“除基取余,逆序排列”的方式,只不过这里的基变成了8或16,即每次除以8或16,然后将余数记录下来。
- 小数部分转换较为复杂,通常会先转换成二进制小数,然后再将二进制小数按照每三位一组(八进制)或每四位一组(十六进制)转换。
-
-
二进制转其他进制:
- 二进制转十进制:使用“按权展开”法,二进制数的每个位上的数字乘以其所在位置的权重(从右到左,权重分别是2^0, 2^1, 2^2, ...),然后求和即可。
- 二进制转八进制/十六进制:
- 直接将二进制数每3位或4位分为一组,然后将每组转换为其对应的八进制或十六进制数。
-
八进制/十六进制转十进制:
- 同样采用“按权展开”法,只不过此时的权重分别为8^0, 8^1, 8^2...(八进制)或16^0, 16^1, 16^2...(十六进制)。
-
八进制/十六进制互转:
- 先将它们各自转换为二进制,然后再由二进制转换为目标进制,或者直接按照每三位(八进制)或每四位(十六进制)转换为相应的二进制数,然后拼接在一起。
举例说明:
- 将十进制数100转换为二进制:100 ÷ 2 = 50(余0),50 ÷ 2 = 25(余0),... 直到商为0,最后得到的余数逆序排列为
1100100
。 - 将二进制数
1100100
转换为八进制:每三位分一组,得到110
、010
和000
,转换为八进制数为620
。
这里附上一个进制在线转换网站:进制转换器 - 在线二进制|八进制|十进制|16进制和任意进制转换工具