《汇编程序设计与计算机体系结构:软件工程师教程》 —1.5 布尔表达式

举报
华章计算机 发表于 2019/12/04 10:59:31 2019/12/04
【摘要】 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第1章,第1.5节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。

1.5 布尔表达式

布尔逻辑是计算机与编程的基本知识。要想学习后续的章节,就必须先了解这些知识。布尔表达式可以用来编写判断语句,以实现某种决策,也可以用来执行按位运算。布尔表达式中的操作数都只能取 0/1 这两种值,或者说,要么是 false(假),要么是 true(真)。下面讲解四种布尔运算:NOT(非)、AND(与)、OR(或)、XOR(异或)。在不同的场合,这四种运算会用不同的符号来表示(参见表1-7),然而我们在这里还是采用这些运算本身的名字来称呼它们。

表 1-7 用来表示布尔运算的符号

image.png

 

布尔运算的规则(参见表1-8~表1-11)是:

NOT:反转操作数(或者说,对操作数取反)。

AND:只有当参与运算的所有操作数都是 true 时,结果才是 true,否则是 false。

OR:只有当参与运算的所有操作数都是 false 时,结果才是 false,否则是 true。

XOR:如果两个操作数中有且只有一个是 true,那么结果是 true。如果两个都是 true或者false,那么结果是 false。

 image.png

image.png

二进制的 0 表示 false,1 表示 true。范例 1-18 以两个二进制数为例,演示了一些布尔表达式的运算结果。

范例1-18 二进制数的布尔运算

 image.png

在后面的章节中大家就会看到,这四种布尔运算对汇编语言很有用。比方说, NOT 运算可以用来计算反码,AND 运算可以用来执行栈对齐,也可以切换大写与小写,OR 运算可以判断数字是大于、小于还是等于 0,XOR 运算可以用来清零,还可以判断某数是奇数还是偶数。

此外,通过掩码(mask),可以用 AND 运算来关闭二进制位(也就是将其设置成 0),用 OR 运算来打开二进制位(也就是将其设置成 1)。掩码是用来操作位域(bit field)以完成某种任务的值。范例 1-19 演示了掩码的三种用法。第一种是用 OR 操作把每个二进制位都设置成 1,第二种是用 AND 操作把每个二进制位都设置成 0,第三种更实用,可以判断 2 号位置上的二进制位(此处假设从 0 开始编号,最右侧的二进制位是 0 号)是否是 1。构造这样一个掩码,把有待判断的位置写成 1,其余的位置写成 0,然后对受测数字及该掩码求 AND,若结果不为 0,则说明受测数字的对应二进制位是 1。

范例 1-19 掩码的用法

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。