《The Art of Assembly Language》
Logical Operations on Bits
原文下载地址:http://kuai.xunlei.com/d/V6-BASHO7eB0UQQAa50
2013-04-22上传 20天有效 不续期
我是从下面的这个地址下载的,不知道有效期到何时
http://www.planetpdf.com/codecuts/pdfs/aoa.pdf
本文在书中的20页,1.5 Logical Operations on Bits
版本、ISBN、作者,笔者都不清楚,因为书中没写
我英语真心不太好,也是边翻译边学习。求砍砖~
正文开始
这里有四个主要逻辑运算,我们需要通过十六进制和二进制来表现他们,他们分别是AND,OR,XOR(exclusive-or),和NOT。与算数运算不同的是,一个十六进制计算器是不侧重这些操作的。因为通常手算会比使用电子设备计算他们简单的多。逻辑运算符AND是一个并失运算注1(意思是它接受两个完全的操作数(operand))。这些操作数都是单一二进制(基于2)位。下面是AND运算:
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1
我们可以通过一个更简单的办法来表示AND操作符,它叫做真值表:
这就像一个你在上小学时学的乘法表一样。我们可以看到这个表格中最左上角的AND是操作符,左侧第一列除了AND,其余的两个是操作数,第一行中,除了最左侧的AND,其余的两个也是操作数,通俗的说,如果第一个操作数和第二个操作数都是1,那结果是1;其余所有情况结果都是0。
逻辑运算符AND的一个重要操作就是,我们可以使用它来把某个结果强制变成0。如果其中一个操作数为0,那么无论另外一个操作数是什么,那么结果一定是0。举个例子来说,在上面的真值表中的结果中,第一行只有0,而且第一列也只有0。相反的,如果一个操作数包含1,那么运算的结果完全就取决于第二个操作数。这些AND操作符的特性是非常重要的,尤其当我们在操作一个序列(bit strings)并希望把它的个位(individual)强制变成0的时候。我们将会在下一节进一步探讨逻辑操作符AND。
译者注2 start:
这里呢,我来举个例子
mov al, 00001111b
and al, 11110101b
最后al的结果就是00000101b
我给大家对应一下啊
画个格子:
0 |
and |
1 |
= |
0 |
0 |
and |
1 |
= |
0 |
0 |
and |
1 |
= |
0 |
0 |
and |
1 |
= |
0 |
1 |
and |
0 |
= |
0 |
1 |
and |
1 |
= |
1 |
1 |
and |
0 |
= |
0 |
1 |
and |
1 |
= |
1 |
笔者感觉有了这个表格和上面那段示例代码,地球人应该都明白了吧~~
有了这个,下面的我就不写示例代码和画格了,大家自行解决
译者注2 end
逻辑运算符OR也是一个并失运算,他的定义如下:
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1
下面是OR操作符的真值表:
通俗的说(colloquially),逻辑操作符OR是“如果第一个操作数或(or)第二个操作数1,那么结果就是1;另外一种就是,”这也被视为是inclusive-OR操作符。
如果在一个OR逻辑运算其中的一个是1,那么它的结果完全与第二个数无关。如果一个操作数是0,那么他的结果永远取决于第二个操作数,并且结果是第二个操作数。和逻辑操作数AND一样,在操作一个序列的时候逻辑操作符OR也是很重要的。
记住这是逻辑操作符OR与标准日常用语中OR的区别。请考虑一句话“我要去商店or我要去公园。”以上陈述意味着讲话要去商店或者要去公园,而不是两个地方都去。因此,在我们日常用语中的OR和汇编语言中的逻辑操作符OR的意思是不一样的。然而,日常应用中的OR却更想汇编语言中的操作符exclusive-OR逻辑操作符,也就是XOR。
逻辑操作符XOR(exclusive-or)也是一个并失运算。它的定义如下:
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
下面是逻辑操作符XOR的真值表:
在日常用语中,通俗的说就是“如果两个都是一样,那么结果就是0,如果两个不一样,那么结果就是1”,记住这个XOR逻辑操作符和我们语言中的OR是最相似的,他比逻辑操作符OR更像。
在XOR中,如果一个操作数是1,那么另外一个操作数就会被它反转(inverse);也就是说,如果第一个操作数是1结果是0那另外一个操作数就是1。如果第一个操作数是0,那么结果肯定是第二个操作数。这个逻辑操作符可以让你有选择的转化一个序列中的位。
逻辑操作符NOT是一个一元运算(monadic operation)(意思是它只接受一个操作数)它是:
NOT 0 = 1
NOT 1 = 0
它的真值表如下表示:
注1:并失运算,许多文章中管它叫二元运算(binary operation),这里叫做并失运算是为了避免与二进制编码系统(binary numbering system)混淆
单词:
dyadic operation 并失[二元,双值]运算
binary numbering system 二进制编码系统
colloquially adv. 口语地,用通俗语