1. 为什么要使用进制

数据在计算机中的表示,最终以二进制的形式存在 , 就是各种《黑客帝国》电影中那些 0101010… 的数字 ;

我们操作计算机,实际就是使用程序和软件在计算机上各种读写数据,如果我们直接操作二进制的话 , 面对这么长的数进行思考或操作,没有人会喜欢。

进制越大,数的表达长度也就越短。

之所以使用16或8进制,而不其它的,诸如9或20进制,是因为2、8、16,分别是2的1次方、3次方、4次方。这一点使得三种进制之间可以非常直接地互相转换 ;

8进制或16进制 既 缩短了二进制数,还能 保持了二进制数的表达特点。转换还方便

2. 进制的介绍

  • 进制是计算机中数据的一种表示方法。 N进制的数可以用0~(N-1) 的数表示, 超过9的用字母A-F 表示。

  • 二进制

二进制是由 0-1 组成

  • 八进制

八进制是由 0-7 组成

  • 十进制

十进制就是我们日常所使用的数字,就是用 0~9 的数表示,逢 10 进 1

  • 十六进制

十六进制是由 0-9, A-F 组成
与十进制的对应关系是: 0-9 对应 0-9, A-F 对应 10-15
字母不区分大小写

3. xx进制转换为十进制的转换公式

  • 二进制转换为十进制

 假设有一个二进制数:101100100, 转换为十进制为:356

        使用横式计算(从右往左算)

0×20 + 0×21 + 1×22 + 0×23 + 0×24 + 1×25 + 1×26 + 0×27 + 1×28

        0乘以任何数都是0,所以我们可以直接跳过值为0的数

1×2+ 1×25 + 1×2+ 1×28

4 + 32 + 64 + 256 = 356

  • 八进制转换为十进制

假设有一个八进制数:1507, 转换为十进制为:839

使用横式计算(从右往左算)

7×80 + 0×81 + 5×82 + 1×83

        0乘以任何数都是0,所以我们可以直接跳过值为0的数

7×80+ 5×82 + 1×83

  7 + 320 + 512 = 839

  • 十六进制转换为十进制

        我们知道十六进制是由 0-9, A-F 组成,与十进制的对应关系是: 0-9 对应 0-9, A-F 对应 10-15,所以在进行十六进制转换为十进制的过程中如果遇到了A-F就把它转换为对应的数值再进行计算

假设有一个十六进制数:2AF5, 转换为十进制为:10997

使用横式计算(从右往左算)

5×160 + F×161 + A×162 + 2×163

        将字母转换为对应的数值后

5×160 + 15×161 + 10×162 + 2×163

  5 + 240 + 2560 + 8192 = 10997

  • 十进制转换为十进制

假设有一个十进制数:1234, 转换为十进制为:1234

使用横式计算(从右往左算)

4×100 + 3×101 + 2×102 + 1×103

  4 + 30 + 200 + 1000 = 1234

4. 通过 8421 方法快速将二进制转换为十进制的方法

首先我们来看一个二进制数:1111,它是多少呢?
你可能还要这样计算:1×2º+1×2¹+1×2²+1×2³ = 1×1+1×2+1×4+1×8 = 15。
我们必须直接记住1111每一位的权值,并且是从高位往低位记,:8、4、2、1。 即,最高位的权值为2³=8,然后依次是 2²=4,2¹=2,2º=1。
记住8 4 2 1,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

接下来我们练习 通过 8421 的方式 进行 快速的计算 , 2,10,16进制的转换

1111 = 8 + 4 + 2 + 1 = 15 = F
1110 = 8 + 4 + 2 + 0 = 14 = E
1101 = 8 + 4 + 0 + 1 = 13 = D
1100 = 8 + 4 + 0 + 0 = 12 = C
1011 = 8 + 0 + 2 + 1 = 11 = B
1010 = 8 + 0 + 2 + 0 = 10 = A
1001 = 8 + 0 + 0 + 1 = 9 = 9
1000 = 8 + 0 + 0 + 0 = 8 = 8
    0111 = 0 + 4 + 2 + 1 = 7 = 7
    0110 = 0 + 4 + 2 + 0 = 6 = 6
    0101 = 0 + 4 + 0 + 1 = 5 = 5
    0100 = 0 + 4 + 0 + 0 = 4 = 4
    0011 = 0 + 0 + 2 + 1 = 3 = 3
    0010 = 0 + 0 + 2 + 0 = 2 = 2
0001 = 0 + 0 + 0 + 1 = 1 = 1
0000 = 0 + 0 + 0 + 0 = 0 = 0


8421方法一般用于二进制转16进制

5. 二进制转换为十六进制的方法

二进制转换为十六进制,就是以 4 位为一段,分别转换为十进制,然后再通过十进制推算出十六进制(因为十六进制是由 0-9, A-F 组成,与十进制的对应关系是: 0-9 对应 0-9, A-F 对应 10-15)

假设有一个二进制数:1111 1101 1010 0101 1001 1011, 转换为十六进制为:FDA59B

使用横式计算(从右往左算),计算出以 4 位为一段的十进制数

    二进制: 1111 1101 1010 0101 1001 1011

通过8421方法快速计算出以为4位为一段的二进制的十进制数

    十进制:  15   13   10   5    9    11

    通过十六进制与十进制的映射关系推算出十六进制

    十六进制: F    D    A   5    9     B


6. 十六进制转换为二进制的方法

假设有一个十六进制数:FDA59B , 转换为二进制为:1111 1101 1010 0101 1001 1011

    通过十进制与十六进制的映射关系推算出十进制

十六进制: F    D    A   5    9     B

十进制:  15   13   10   5    9    11

    通过8421方法反推出二进制数

二进制: 1111 1101 1010 0101 1001 1011


7. 十进制转换为二进制的方法

  • 将一个十进制数除以2,得到的商再除以2,依此类推直到商等于0时为止,倒取除得的余数,即换算为二进制数的结果。只需记住要点:除2取余,倒序排列。

  • 假设有一个十六进制数:125, 转换为二进制为:1111 101

125 ÷ 2 = 商:62 余:1
62 ÷ 2 = 商:31 余:0
31 ÷ 2 = 商:15 余:1
15 ÷ 2 = 商:7 余:1
7 ÷ 2 = 商:3 余:1
3 ÷ 2 = 商:1 余:1
1 ÷ 2 = 商:0 余:1


8. 十进制转换为十六进制的方法

  • 将一个十进制数除以16,得到的商再除以16,依此类推直到商等于0时为止,倒取除得的余数,然后将大于9的余数通过十进制与十六进制的映射关系转换为英文字母 A-F,即换算为十六进制数的结果。只需记住要点:除16取余,将大于9的余数转换为英文,倒序排列。

  • 假设有一个十六进制数:487710, 转换为十六进制为:7711E

487710 ÷ 16 = 商:30481 余:14(E)
30481 ÷ 16 = 商:1905 余:1
1905 ÷ 16 = 商:119 余:1
119 ÷ 16 = 商:7 余:7
7 ÷ 16 = 商:0 余:7