主要内容 #
在今天的大师码课程中,我们介绍一下“进制”。
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
这个方法,请多加练习。