二进制有什么好处,为何电脑都采用二进制?

关注者
131
被浏览
46415

14 个回答

很多专业人士从第一次学计算机,就开始接触二进制,发现书上说的基本都是术语,不是“人话”,马上晕倒。二进制是什么?什么“逢二进一”,这都不重要,狗屎。只要是人发明的东西,用人话就能讲清楚。

咱们就用人话,看看能不能讲清楚“二进制”。

咱们穿越啦,回到古代。你在一个烽火台上,我在另一个烽火台上,只要你那边来敌人,你就点狼烟通知我。这个能懂吧?现在,我想清楚的知道你那儿来了几个敌人,我好做准备工作。怎么办呢?很简单,两个办法。

1、你点一次火,再灭掉一次,算是一个敌人,来两个就点2回,灭两回。 2、或者你同时点两堆火。我就知道,是来了两个敌人。

我去,你说要是敌人来了200个怎么办?你那边要么熏死,要么火堆多到足够自焚了……

朝代在发展,人类在进步。一晃爱迪生来过地球了,他发明灯泡了。

你可以用灯泡“亮”和“灭”来跟我表示这个信息。

如果一个灯泡没亮,说明没有敌人。灯泡没亮,也可以说是状态0。

如果来了一个敌人,灯泡亮了,我就知道来了1个,这就是状态1。

问题又来了,还是来了200个敌人……我去,要么你开关200次灯泡,要么准备200个灯泡一起亮。第一个方法灯泡质量也不一定好,再说,你闪那么快,我也数不过来。第二个方法,我数也得数小半天,没数完,早被敌人冲过来砍死了。还有,200个灯泡,你确定你那儿电费余额够不?

好在咱们都是聪明人,咱们约定,多安几个灯炮打暗号。为了不用画图,0代表关灯,1代表开灯。

00000000,8个灯全关,放心睡觉,这是状态0,说明一个敌人没有,平安无事。(状态0) 00000001,这说明来了一个敌人,你负责干掉他就行了。(状态1) 00000010,这是第二个能表示的状态,咱们给它个编号,叫状态2,说明来了两个敌人,也没啥大事。

接下来,应该是第三种情况了。00000011,这就是第三种情况。咱们不说换算什么的,这种亮灯的方法咱们就叫3(状态3)。

为了让咱俩都明白,咱们写个清单(文章最后)出来。由清单能看出来,如果来了255个敌人,你直接打开8个灯泡,我也就一目了然,准备刀枪就上了。

因为电脑也一样,只有开和关(通电、断电)来表示两种状态(因为早期电子元件只能表达这两种状态),就采用“二进制”了,以至于N年以后电子元件能表示出第三种状态“三进制”的时候,二进制已经成为全世界的通用语言,地位无法撼动了。至于2进制怎么计算,也很简单,比如第一种状态(1)+第二种状态(2)=第三种状态(3)。你看:

00000001 +00000010 --------- =00000011,按表格一找,是3,就是这么简单。

所以,脑子里别想着10进制和2进制怎么换算,这些脏活儿累活儿,可以电脑去干。你只要记住表格里的“二进制第几种状态就是10进制中的几”就可以了。

还有,磁盘里的2进制,用磁铁的N极和S极表示1和0,N=0,S=1,把硬盘放大了1000万倍看看,上面都是小磁铁,通过硬盘的磁头识别,再变成电流信号“通”和“断”来交给CPU处理。

那光盘上也一样,光盘上是用“长”和“短”的小镜子来表示1和0。把光放大了1000万倍看看,上面都是长点和短点,用激光头一照,根据反光的长度来表示数据。

那数据多了怎么办?8个编成一组,叫1byte,也就是传说中的1个字节,是由8个0或1组成的,每个0或1叫1bit。通常,一个英文字母需要8个灯泡表示,一个汉字需要16个灯泡表示。

顺便说一下,一下能让我看清8个灯泡亮没亮的方法,叫“并行”(8位),用1个灯泡来回开关,妄图晃瞎我的传递数据的方法叫“串行”,也就是一串信号的意思。所以,频率相同的情况下,“并行”肯定比“串行”快。

想一次能处理的信息越多,就需要越多的“位”数,比如你家CPU是64位的,就相当于一次能传递64个灯泡组成的信息。

先讲这么多吧,中心思想只有一个“技术课讲的好,也很有意思!”

再赠送一个知识点,在EXCEL里可以用公式=DEC2BIN()来换算。

附表:

10进制编号 灯泡表示

状态 1 00000001

状态 2 00000010

状态 3 00000011

状态 4 00000100

状态 5 00000101

状态 6 00000110

状态 7 00000111

……(以此类推)

状态 250 11111010

状态 251 11111011

状态 252 11111100

状态 253 11111101

状态 254 11111110

状态 255 11111111

二值逻辑。
刚好二进制正好对应电路里的高低电平

当然要弄成多进制也不是不可以,但是分得多了,出错的几率也就大
比如用二进制,5V电压可以直接用2.5V作分界,5V-2.5V是1,2.5V-0V是0,这样大的区间就保证出错机率小(实际运用不可能真的就5V为1而0V为0的)
但是若多进制,比如10进制,5V就要分10下,那么每个区间就有点小了,一不小心就跳到别的区间去了。要解决也不是不可以,第一提高电路的精度(难),第二提高电压(简单),但提高电压电路在设计时要考虑的问题就更多了,而且带来的功耗问题都不利于集成电路的发展