当前位置: 资讯 >

Scratch与数学的整合28

来源:哔哩哔哩 发表日期:2023-08-16 19:41:09
x

第28课        二进制(二)


(资料图)

一、课程导入

我们平时算加减法都是按十进制算的,那么二进制也可以进行加减法运算吗?

二、知识储备

二进制的加减法法则:0(2)+0(2)=0(2),0(2)+1(2)=1(2),1(2)+1(2)=0(2),0(2)-0(2)=0(2),1(2)-0(2)=1(2),0(2)-1(2)=1(2)(借位后),1(2)-1(2)=0(2)。

三、例题讲解

四、流程图

五、变量信息

编写二进制加法用到的变量:个位加数、另一个个位加数、十位和、另一个十位加数、十位和、百位加数、另一个百位加数、百位和、千位、结果

编写二进制减法用到的变量:个位被减数、个位减数、个位差、百位差、十位被减数、十位减数、十位差、结果

六、代码示例

我们先来看看二进制加法的代码

首先询问原式的两个个位的加数。

然后根据两个加数的和的情况判断个位和是0还是1。

再询问原式的两个十位的加数。

接着对十位加数的和是否等于2合并起来分类讨论。对于第一次判断为不等于2的,要继续判断该两数的结果,如果结果是2或0,则十位和是1,否则判断结果是1,十位和是1。对于第一次判断为2的,要继续对该两数和判断,若判断结果为1则十位和为0,若第二次判断与第一次判断结果相同,则十位和等于1。

接下来再询问两个百位的加数。

再接下来对十位+另一个十位数+1的变量值的判定结果(3,2,1,0)中的每一个情况分类讨论,进而求出百位和、是否要补上千位。把每个需要保留的数位“连接”起来。

最后说出最终的答案。

我们再来看看二进制减法的代码。

首先询问被减数、减数。

然后以1为基准判断两数被减数减减数够不够减,并根据情况求个位差。

再询问十位被减数、减数。

接着根据个位差够不够减的情况判断是否会出现连退位。根据前面的求个位差可知,如果执行的是2-个位数的过程,则说明十位不退位。然后对十位被减数和十位减数的相等或不等关系进行十位差、结果进行分类讨论。都等于1就结果只没有百位,其余情况结果只有个位。

反之如果不出现连退位,那么就不受个位的影响了。那么我们直接判断十位够不够减。这时单独算十位差。一个数的最高位不能为0,而二进制满2进1,那么百位只能是1。既然百位固定是1了,那么十位必须“连接”上。拿“百位差”变量作为最终结果。

最后说出最终的答案。

七、知识拓展

二进制运算不仅可以进行基本的加减乘除,也可以推广至多个数连加、连乘或乘加。观察图片,我们发现这三幅图分别是与、或、非逻辑电路。我们用“0”表示灯泡亮,用“1”表示

灯泡不亮,那么我们可知左图只要有一个灯泡亮另一个就必然亮,中间的图只要电源是开的,可能亮其中任意一个也可能两个全亮。右边的图如果灯泡是亮的,则电源处于关闭状态,反之同理。于是我们列出真值表来:会发

现只有A,B都为1时“与”布尔值才为1,其余情况都为0,只有A,B,只有A,B都为0时“或”布尔值才为0,其余情况都为1,A为0时not(非)A为1。这样就有了3种逻辑运算:与运算、或运算、非运算。可是每种运算规则都对应于哪种算术规则呢?将4组A、B的值相加分

别得到的结果都对应于Aand(与)B、Aor(或)B中的哪个呢?相乘的呢?,not(非)A又是怎样否定原数的?我们列表找一找。我们可以发现,A×B是与运算、A+B是或运算、最后0元、1之间取反是非运算。那运算顺序呢?算数四则运算应该该是先去括号再乘除后加减吧?那这里逻辑运算也应遵循这样的运算顺序:非运算→与运算→或运算。

x
推荐阅读 更多