# 什么是二进制数字

在讲解后面章节之前，我们需要先掌握下二进制数字的相关知识。那么什么是二进制数字呢？我们平时使用的数字“0，1，2，3，4，5，6，7，8，9，10，11……”被称为十进制数字。十进制数字的原理是每当数到10就进位，比如当我数到9的时候，没有一个单独的符号来表示“十”了，就向左进一位，再把9变成0，结果就是10。相比之下，二进制数字则是数到2就进位。如果使用二进制来数数，那么我们从1数到10该怎么数呢？我给你演示下：1，10，11，100，101，110，111，1000，1001，1010。看到了吧，每当我数到个位是2的时候，没有一个单独的符号来表示“二”了，就向左进1位，再把2变成0，结果就是10。

二进制最初看起来很不习惯，全是由0和1组成，完全没有直观数量感受的概念。例如，当听到别人说十进制的100的时候，我们立即就能知道100大概代表的就是一麻袋苹果的数量。但是如果别人对我们说一堆二进制的数，我们就无法感知这个二进制数字到底代表多少数量了。这是什么原因导致的呢？其实就是生活经验告诉我们的。如果我们从小就使用二进制数的话，那么当我们听到二进制的1111111时，我们也许立即就能知道它代表的数量大约是数学期末考试成绩的分数了。

那么，我们先做个测试，二进制的10011代表十进制的数字多少呢？我来慢慢数一数：1，10，11，100，101，110，111，1000，1001，1010，1011，1100，1101，1110，1111，10000，10001，10010，10011。当数到第19个数字的时候，结果正好是10011，说明二进制的10011代表十进制19。不过这样把十进制转换成二进制的方法有点笨拙，让我们来学习一种更快的转换方式，并且这种方式适合所有进制的转换。我们先把这种方法用在十进制上看看怎么计算：

比如十进制的45678

$$45678=4*10^4 + 5*10^3 + 6*10^2 + 7*10^1 + 8*10^0$$

用同样的方法可以计算二进制的10011

$$10011=1*2^4+0*2^3+ 0*2^2+1*2^1+1*2^0=19$$

了解了十进制转二进制的方式，我们再看二进制转十进制是怎么计算的？以十进制19为例，它的计算步骤如下所示：

1. 用整数除法计算19/2=9余1
2. 用整数除法计算9/2=4余1
3. 用整数除法计算4/2=2余0
4. 用整数除法计算2/2=1余0
5. 用整数除法计算1/2=0余1

最后，把余数倒序连接起来得到10011，它就是十进制数字19的二进制表示形式！最后，我们验证下二进制的10011是否等于十进制的19。

$$10011=1*2^4+0*2^3+ 0*2^2+1*2^1+1*2^0=19$$

经过计算，二进制10011的确等于十进制19。
