设为首页收藏本站

名师开讲啦丨二进制,0和1的故事

[复制链接]
488 0
各位同学,有个激动人心的消息小智憋了很久,终于可以向大家公布了~!在各位领导和老师的努力下,小智期待了很久的专业知识讲坛——名师开讲啦专栏,终于和大家见面了。

在各个部门的积极配合努力下,小智终于可以跟具有行业多年经验,同时又有着丰富教学经验的老师约稿了!

在这个版块里,老师会用通俗易懂的语言,生活常见的场景来诠释晦涩难懂的知识点,不管你是一点基础都没有的IT新手还是已经入门的从业者,都能从文章中汲取养料充实自己。

希望“名师开讲啦”这个栏目可以为同学们可以利用好这一版块,认真学习,提高技术,未来在等你们!

以下是在行业奋战多年,拥有无数奖项和成绩,同时又非常循循善诱平易近人的时校长为咱们“名师开讲啦”投的第一篇稿——《二进制,0和1的故事》。

01、二进制,这是什么鬼!

我们提到“二进制”都会联想到计算机或编程,但大部分人对于二进制都有一种神秘感,甚至科班出身的计算机本科毕业生都处于懵懵懂懂,说不清道不明的状态,下面就让我们来认识下什么是“二进制”。


02、进制

要想弄明白什么是二进制,我们就要先从什么是“进制”说起。进制就是“逢几进一”。
我们在小学数学中就学过“逢十进一”的道理,这其实就是对十进制的描述,那同理二进制就是“逢二进一”,八进制就是“逢八进一”,十六进制就是“逢十六进一”。

我们先来看一张图
微信图片_20191017094332.png
               
上表中,我们有三点需要知晓:

1、
每行的数值是完全相同的,只是在不同的进制规则下,表示方法不尽相同。就像1磅等于453.59237克,在“磅”的规则下和“克”的规则下,同等重量的物体,表示方法就出现了不同。

2、
同样表示一个任意数值,十进制下,需要0到9这10个数码的组合来完成,二进制下只需要0和1这两个数码的组合就可以完成。

3、
表示同样一个数值,二进制下,数字最终的长度要比其他进制下长很多。

那人类为什么要使用十进制来计算呢?答案很简单就是为了最大化利用我们身体携带的天然计算工具——十根手指。

微信图片_20191017094338.jpg

在我们还没学过数学甚至还不会基本加减法的时候,我们可以用“数指头”的方式来解决最简单的运算问题。2 + 3 = 5,我们可以很方便的用两根手指头再加上三根手指头,最终通过计算手指头的数量来得出结果5。而随着数目逐渐增加,十个指头慢慢满足不了计算的要求了,聪明的人类就学会了用“逢十进一”这种方式,依然用我们原始的手指头来达到更大数目计算的目的,从而开始有了“进制”的概念。
“屈指可数”这个成语我们也终于找到了他的出处。

03、二进制
在计算机的内部世界,我们采用的不是我们最为熟悉的十进制,而是采用的常人难以理解的二进制,那为什么计算机内部的数制要采用二进制呢?这也是有原因的。我们上面讲到,二进制只有两个数码:0和1。(为什么没有数码2,3,4....9呢?千万别忘了,二进制可是“逢二进一”)。

电脑的基层部件是由集成电路组成的,那如何用物理世界中的电路来达到表示数字呢?我们可以这样简单的理解:当计算机工作的时候,电路通电工作,于是每个输出端就有了电压,我们可以把高电压视为1,低电压视为0,这样我们只需要区分电压的高低即可用来表示具体的数值。

微信图片_20191017094342.jpg

当然,理论上也能够将电压分为10种状态,来对应0到9这10个数字,但是,与采用二进制只用区分电压高低来讲,采用十进制来设计计算机就需要更为复杂的结构。这就是为什么计算机内部要采用二进制来表示数字。

现在我们明白了计算机为什么要采用二进制,那么,对于我们更为重要的是,我们看到的二进制数字到底是几?

在二进制的规则下,我们先随便写几个数字,大家先来分辨一下下面哪个数字不可能是用二进制表示的。

101          113         10110

通过上面的学习,思考后我们很容易得出113这个数字不可能是一个二进制数字,二进制怎么可能会有“3”嘛。

对,我们找出了113这个数字不是一个二进制表示法下的数字。但我们看到的110和10110 难道是我们日常所理解的“一百一”和“一万零一百一”吗?NO,NO,NO,这些都是在十进制规则下的含义,当我们学习了二进制之后,我们再看到这些数字,应该念为“一零一”,“一零一一零”,但他们实际上的数值是多少呢,也就是在十进制下应该是多少呢,这就是接下来我们要展开讲解的重头戏,“二进制如何转换为十进制”。

04、二进制转为十进制
我们再回过头来看十进制。

我们在十进制的规则下写一个数字367,我们看到这个数字的第一反应会将它读为“三百六十七”。在十进制的规则下,它确实如此,但我们有没有想过为什么要读为“三百六十七”,而不是“三六七”呢?因为我们小学就学过3所在的位置是百位,6所在的位置是十位,7所在的位置是个位,也就是说“367”中的3代表的是300,6代表的是60,7代表的就是7。

这不是咬文嚼字,这是我们对数字内部意义的重新总结和认识。

我们再来换一个角度。

367实际的含义应该是300+60+7,所以读为“三百六十七”。
用数学化的表示法再来次变形(“请注意,我要变形啦”)

367=3*100+6*10+7
再次变形
367=3*102+6*101+7*100

我们仔细来观察上面的公式,能总结出什么样的规律呢
微信图片_20191017094347.jpg

答:

  • 因为是十进制,所以就是以10为底
  • 次方的规律也很容易看出来,最右边的次方是0,向左依次加一。


铺垫了这么多,终于到了揭晓答案的时候,别忘了我们的问题“二进制如何转换为十进制”。

我再简单讲两分钟(咳咳)。

我们随意在二进制规则下写一个数字101,别忘了怎么念(一零一)。那参照上面我们容易理解的十进制的法则,二进制下这个数字的计算规则为:

101=1*22+0*21+1*20

答案是5,也就是说二进制规则下的101,其实就是十进制下的5。

再来一道:

101000=1*25+0*24+1*23+0*22+0*21+0*20

答案是40。

虽然我们理解了上面的运算规则,但总感觉过于麻烦,我们再次观察发现,二进制因为只有0和1这两个数码,而“1乘任何数为任何数本身,0乘任何数为0”,我们可以将上述所有的推理总结为下面的规律。

还是上面的二进制数字

101=1*22+0*21+1*20
               微信图片_20191017094351.jpg

步骤一:在数字上方标出对应的乘数(都是2的倍数,从右向左依次翻倍)
步骤二:把1上面的数字相加即可(1乘任何数为任何数本身,0乘任何数为0)

我们很容易按上面的方法得出101转换为十进制为4+1=5

再来一个复杂的,101011010

       微信图片_20191017094355.jpg

2+8+16+64+256=346

这就是101011010转换为十进制的结果。

我们手机上的计算器APP还有中学生用的高级计算器上面都有二进制和十进制转换的功能,大家可以去摸索尝试下。

记住:“人和动物的区别在于能否使用工具”。

其实我们在电影中看到的黑客电脑上满屏的1和0,也不过是一大串二进制数字,故弄玄虚罢了。

我们上面的过程完全推理了二进制如何转为十进制,很多的软件工程师也只是记住了计算规则而不懂里面的原理,我们在上面完全剖析了整个过程,如果你能明白,那太好了(其实不是很难,都是小学数学),如果不明白整个过程,记住最后的结论和计算规则也是相当值得炫耀的一件事情了。

最后,告诉大家一个事实:

世界上有10种人,懂二进制的和不懂二进制的!




举报 使用道具

回复
搜索
热搜: java python UI HTML5

图文热点

客服中心

4006-371-555 周一至周六 9:00-19:00

关注我们

  • 关注官方微博
  • 关注官方微信
友情链接
快速回复 返回顶部 返回列表