跳至正文
View Categories

< 1 min read

主要内容 #

在今天的大师码课程中,我们介绍一下“进制”。

1. 二进制 #

我们生活中,常用阿拉伯数组,就是十进制。数学中其实还有其他几种进制,我们先来看一下,“二进制”

从上面的动图可以看出来,其实“二进制”,就是“满二进一”

或许大家都听说过,“二进制”和计算机是关系非常紧密的。
现在大家已经学习过来 C++ 的一些知识,那么,在下一个章节中,我们将给大家介绍,它们之间的联系。

不过这会儿,我们还有一个很重要的知识要学习,那就是“进制转换”
由于进制很多,不可能一一去讲。我们只需掌握重要的几种就可以了。

3. 二进制和十进制转换 #

我们先来看一下,十进制数中,我们有这样的约定:

千    百    十    个
1     2     3    4

这是我们学习过的“数位”
那么,给定一个数(比如 1234),如何计算它的值呢?

从个位开始:
个: 4         = 4
十: 3 * 10    = 30
百: 2 * 100   = 200
千: 1 * 1000  = 1000

所以,总和为:1000 + 200 + 30 * 4 = 1234

其实这个方法,可以将任意的进制,转化成“十进制”。在上一讲中,我们其实已经使用过这个方法了。

现在我们来看一下,二进制该怎么转化。

3.1 二进制 to 十进制 #

假设有一个二进制数,如何转化成十进制数呢?我们先来看几个例子:

0000   // 0 (可以先数一数,来得到对应的十进制数)
0001   // 1
0010   // 2
0100   // 4
1000   // 8

然后我们可以这样约定,在二进制数中:

八    四    二    个
1     0     1     0

然后,给定一个数(比如 1010),如何计算它的十进制值呢?

从个位开始:
个: 0        = 0
二: 1 * 2    = 2
四: 0 * 4    = 0
八: 1 * 8    = 8

所以,总和为:8 + 0 + 2 + 0 = 10

请计算下面几个二进制数的十进制值是多少。
注意,请写出计算过程。

1111
111
11
1011 0101 // 二进制数的写法上,我们习惯上,书写时,4 位一组
0110 0010

答案:

15
7
3
181
98

以下这几个,希望大家能够记住。

0000   // 0
0001   // 1
0010   // 2
0100   // 4
1000   // 8

3.2 十进制 to 二进制 #

需要使用“倒除法”,被除数是 2 。
假设有一个十进制数:125

   
 __62___
2)125     // 商 62 ,余数 1
  12
---------
    5
    4
---------
    1


取上一步计算得到的“商”,继续做除法。

 _31__
2)62     // 商 31 ,余数 0
  6
---------
   2  
   2
---------
   0


取上一步计算得到的“商”,继续做除法。

 _15__
2)31     // 商 15 ,余数 1
  2
---------
  11  
  10
---------
   1


取上一步计算得到的“商”,继续做除法。

 __7__
2)15     // 商 7 ,余数 1
  14
---------
   1  


取上一步计算得到的“商”,继续做除法。

 _3__
2)7     // 商 3 ,余数 1
  6
---------
  1  


取上一步计算得到的“商”,继续做除法。

 _1__
2)3     // 商 1 ,余数 1
  2
---------
  1  

不能再除。

先写最后一步的“商”
然后,倒着将所有余数写出来。(先写最底下的余数)

1111 1101

这个方法,请多加练习。

习题 #

课后练习