Python基础之二进制

Posted chairlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础之二进制相关的知识,希望对你有一定的参考价值。

引子

首先,计算机一共就能做两件事:计算和通信

那在讲计算机之前,我们先来讲一个故事,大家知道古时候的中国是如何通信的么?

假如,战国时期两个国家要打仗了,我们垒了城墙,每隔一段就有兵镇守,现在有人来攻打我们了,然后我们是不是得通知其他人有人来打我们来了?怎么通知?

1.派个人跑着去?等人回来,仗打完了

2.点狼烟信号

好了,现在有5000精兵来打你了,你点了根狼烟搬救兵,从东边来了10个人,西边来了10个人,20个人来了,和你们一起战死了。

这怎么办?

我们不能这么保守了,只要我一点狼烟说有人来打我们了,先来他10000人,结果来了200个敌人,我们呼啦啦来一大堆人,是不是浪费资源啊?

我们是不是除了告诉人家要打仗了,还得告诉别人来了多少人啊?那我们怎么告诉?

来一个人点一根?来了5000人,点5000根,不用打了,自己给自己烧死了

那好我们就约定,来10个人点1根,来100个人点2根,来1000个人点3根,来5000个点4根,来10000个点5根。。。以此类推

好了现在我们有一个变态的需求,要精确的传送到底有多少个敌人?

每次报告信号之前得把人数清楚了再报告,我们怎么办?

这里让学生自由发挥5分钟

好了,现在来看看我的方法。。。

技术图片

假如我们有20个狼烟孔,狼烟孔点燃了代表有人,没点燃代表没人。

这时候,1个敌人来了,点1根狼烟

技术图片

现在2个敌人来了,怎么办?再点一根狼烟,把20根狼烟都点上能表示20个人。。。这肯定不行。我们这样,把

第一个狼烟孔灭掉,点燃第二个,这样只点燃第二个孔就代表两个人

技术图片

现在3个敌人来了,怎么办?把第一个狼烟孔点着了就表示3个人

技术图片

那如果来了4个人敌人,现在有两根狼烟都点着了只能表示3个人,表示4个人,做得到么?臣妾做不到啊~~~

但是现在使用2根狼烟原来只能表示2个人,现在我们是不是表达了4种状态(0,1,2,3)(该着重表达原来的一根狼烟只能表达一个人,现在却能表达四种状态了)。

再说眼下这4个敌人,咱们用这两根狼烟已经表现不了了,所以我们只好再点一根,同时我们还要灭掉前面的两根,因为第三根这一根狼烟就可以表示4个敌人

技术图片

讲啊讲,突然之间发现每一位恰好就是2的n次方!

。。。剩下的你们自己发挥吧。。。

二进制定义

二进制是计算技术中广泛采用的一种数制二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

我们发现刚刚我们讲述的狼烟的故事和现在这个新理论出奇相似。假设狼烟点燃用1表示,狼烟灭掉用0表示,那么刚刚我们用狼烟表示百万雄师的理论就可以用在计算机上,这种表示数字的方式就叫做二进制。

你可能会觉得发明计算机的人思路轻奇,为什么要多此一举的用这种方式来表达数字,但事实上计算机不像我们这样智能,CPU是一个包含上百万个精巧的晶体管的芯片集合,晶体管表达感情的方式很简单,就是通过高低电压(有电没电),低电压的时候表示0,高电压的时候表示1,因此最终能让计算机理解的就只有0和1而已。

二进制与十进制转换

其实刚刚在无形中我们已经将10进制转换成2进制了,现在我们要再总结一遍。

刚才我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n次方这个规律

填位大法:

先把他们代表的值依次写出来,然后再根据10进制的值把数填到相应位置,就好了~~~

十进制转二进制方法相同,只要对照二进制为1的那一位对应的十进制值相加就可以了。

技术图片

以上是关于Python基础之二进制的主要内容,如果未能解决你的问题,请参考以下文章

Python基础之二进制

Python基础之字符编码

python基础知识之字符编码

python基础之字符编码

Day3-python基础之函数

经典Python面试题之基础80问 Python开发