太极生两仪,两仪生四象,3000年前中国的《易经》,道出了伏羲所画的八卦图。受此启发,1703年伟大的数学导师莱布尼茨,发表了一篇名字很长的论文,《论只使用符号0和1的二进制算术,兼论其用途及它赋予伏羲所使用的古老图形的意义》。我们上一期所学习的二进制就是来自于此。

vbs如何将数字转换为abcd CodingMaster第2话(1)

1854年,英国数学家布尔发表了一篇里程碑式的论文,详细阐述了一种代数化的逻辑系统。他提出的逻辑演算,打下了后来电子电路设计的基础。牛顿说他只是站在了巨人的肩膀上,谁又不是呢?计算机的核心就是大规模集成化的电子电路,是站在了《易经》老莱和老布以及众多科学先驱的肩膀上。

vbs如何将数字转换为abcd CodingMaster第2话(2)

我们复先习一下二进制,它是一种只有0和1的代数表示,在运算中逢二进一。小学我们学过的四则运算,同样也可以应用于二进制。二进制的加减乘除,与十进制并没有太大区别。我们先来看加法,0 0得0,0 1得1,1 0得1 ,1 1得0并产生一个进位1,最终的结果是10110。

加法没什么特殊的,可能1 1得10有点不同于十进制。只要应用逢二进一的原则就好理解了,我们把二进制转为十进制,结果也是等效的。再来看减法,0-0得0,1-0得1,1-1得0,我们给减数前面补一个0。然后1减0得1,最终的结果是1010,同样转为十进制,结果也是等效的。

vbs如何将数字转换为abcd CodingMaster第2话(3)

但是做减法有可能碰到不够减的情况,那该怎么办呢?我们做十进制减法的时候,碰到小减大会先用大的减小的,然后把结果加上负号,二进制减法也是这样处理。

vbs如何将数字转换为abcd CodingMaster第2话(4)

乘法并没有什么特殊的,0x1100得0000,1x1100得1100,最终结果是11000,这个跟十进制没什么区别。这里有个规律撒,如果乘数第一位是1,后面无论是1个还是N个全是0的话,最后结果就是被乘数后面加上N个0。乘数有N个0,被乘数整体就向左边移动了N位,像这种乘法可以直接用向左位移取代,简称左移。

vbs如何将数字转换为abcd CodingMaster第2话(5)

我们再来看二进制除法,1110除以10。我们列个竖式,按照与十进制相同的做法即可。有一点需要注意,0不能作为除数,但是可以作为被除数。0除以任何数(不含0)都为0,一路算下来最终结果为111。我们观察一下结果,111其实就是1110向右移动一位,这里有个规律跟乘法很像。当除数第一位是1,后面无论是1个还是N个全是0的话,如果被除数最后面的0大于或等于N,那么结果就是被除数向右移动N位。最右侧的N个0被放弃,像这样的除法就相当于向右位移,简称右移。

vbs如何将数字转换为abcd CodingMaster第2话(6)

好了,这就是二进制的基本运算了。接下来我们就进入布尔代数了撒,我叫谭玉刚,这是一个事实,是真的;我有十万粉,这是一个梦想,是假的。我叫谭玉刚,并且我有十万粉,这句话总体上来说是假的,这就是布尔代数的“与/AND”运算。

vbs如何将数字转换为abcd CodingMaster第2话(7)

“与”可以理解为并且,只有前后两个条件都是真的,那么最终结果才是真的。“与”是布尔代数的一个基本运算,它是个二元操作符。就像我们登陆网站或者App的时候,账号必须是存在的,密码必须是匹配的。两个条件必须同时满足,你才能正常登陆进来。

vbs如何将数字转换为abcd CodingMaster第2话(8)

我们来列出登陆的所有情况,就会形成一张表格,这张表称为真值表。一般我们用0代表假,用1代表真。这个表格会变成这个样子,这就是“与”运算了。

vbs如何将数字转换为abcd CodingMaster第2话(9)

当你去超市买东西结账的时候可以用现金也可以刷卡,甚至可以部分现金部分刷卡。虽然你可能遭白眼,但是你不能不付钱。其实这就是一个典型的“或”运算场景,当你在某些网站或者App上查东西的时候,你可以通过输入一个条件,或者多个条件进行查询。但是如果一个条件都不输入,那就查询不到相关信息,这也是一个典型的“或”运算。

vbs如何将数字转换为abcd CodingMaster第2话(10)

你看我在查询我的吃货日志的时候,时间输入10月1日,Biu一下之后就能查到我那天吃了啥,又是炸鸡又是羊肉的吃的还真不少。

vbs如何将数字转换为abcd CodingMaster第2话(11)

“或”运算的真值表,除了00外其他都是1。“或”运算呢,是布尔代数的第二个基本运算,它也是一个二元运算符。

vbs如何将数字转换为abcd CodingMaster第2话(12)

对不起,我俩惺惺相惜情不自禁。言归正传,我们开始了。

图画里,龙不吟,虎不啸,小小书童,可笑可笑

棋盘里,车无轮,马无疆,叫声将军,提防提防

莺莺燕燕翠翠红红处处融融洽洽

雨雨风风花花叶叶年年暮暮朝朝

vbs如何将数字转换为abcd CodingMaster第2话(13)

对对子,很像布尔运算的“非”。你给我一个字我给你对一个,天对地,雨对风,大陆对长空。山花对海树,赤日对苍穹。雷隐隐,雾蒙蒙,日下对天中,风高秋月白,雪霁晚霞红。你丢进来一个大,我还给你一个小。

“非”就是反义,“非”是个一元操作符,它只是针对当前给定的值取反义,所以它的真值表是相当简洁。

vbs如何将数字转换为abcd CodingMaster第2话(14)

你面前有一条河,你要么乘公交车从桥上过,要么乘船从水上过。但是如果你那个都不选,就过不了河。你两个都选,你以为你是鸣人吗?你说你可以游泳过去,那我只能说牛逼!

vbs如何将数字转换为abcd CodingMaster第2话(15)

“异或”是二元操作符,只有当两个值不一样时结果才为真,否则为假。

vbs如何将数字转换为abcd CodingMaster第2话(16)

你不看节目也不加油,那就往前再走410公里。

vbs如何将数字转换为abcd CodingMaster第2话(17)

你看节目加油就1500。

vbs如何将数字转换为abcd CodingMaster第2话(18)

你不看节目光加油,不给。

vbs如何将数字转换为abcd CodingMaster第2话(19)

这活脱脱就是一个“同或”运算啊!捆绑经营就是“同或”,我觉得我都不用解释太多。两个选项都选或者都不选,结果为真。布尔运算讲的差不多了,讲的不好,让你见笑了。

vbs如何将数字转换为abcd CodingMaster第2话(20)

我也没啥别的技能,只能说:兄弟不要动手,恭祝你福寿与天齐,恭贺你生辰快乐!年年都有今日,岁岁都有今朝,恭喜你,恭喜你~本期视频就到这里,下一期我们讲晶体管和逻辑门,再见!

vbs如何将数字转换为abcd CodingMaster第2话(21)

,