![]() | 第1章 汇编语言基础知识 | -5- | |||||||||||||||||||
③ 对给定的数作什么操作可得到二进制数01001011。 ④ 若把给定的数同00100010作XOR操作,将得到什么结果。 |
|||||||||||||||||||||
解: ① 将OR操作的结果同给定的数相比,不难发现只要把给定数字的bit0,bit3位置成1,其它位状态保持不变,即可得出结果。因此可很容易求出八位二进制数00001001,并可验证: | |||||||||||||||||||||
10110100 | |||||||||||||||||||||
OR) 00001001 | |||||||||||||||||||||
10111101 | |||||||||||||||||||||
可见,OR操作可以方便的将某个二进制数的特定位置成"1"而保存其它位不变。只要取另一个二进制数,让这个数中的相应数位--即和给定的数中要改变的数位相对应的位--为"1",而其它位为"0",即可达到目的。 | |||||||||||||||||||||
② 将AND操作的结果同给定的数相比,可以看出只要把给定数字的bit2,bit7位置成0,其它位保持不变,即得出结果。因此可很容易求出八位二进制数01111011,并且可以验证: | |||||||||||||||||||||
10110100 | |||||||||||||||||||||
AND) 01111011 | |||||||||||||||||||||
00110000 | |||||||||||||||||||||
可见,和OR操作相对应,AND操作可以把某个二进制数的特定位置"0"而保持其它位不变。只要取另一个二进制数,让这个数的相应位为"0",而其它位为"1",即可达到目的。 | |||||||||||||||||||||
③ 比较结果和给定数,可看出将已知数所有位取相反状态,可得到结果。因此可用NOT操作,即 | |||||||||||||||||||||
NOT) 10110100 | |||||||||||||||||||||
01001011 | |||||||||||||||||||||
④ 将两个数作XOR操作 | |||||||||||||||||||||
10110100 | |||||||||||||||||||||
XOR) 00100010 | |||||||||||||||||||||
10010110 | |||||||||||||||||||||
把得到的结果10010110同已知数相比较,可以看出只要将已知数的bit1,bit5两位取反,就能得出结果。将(3)和(4)进行比较,可以发现这样一个规律:NOT操作可以将给定数的所有位取反,而XOR操作可以将给定数的特定位取反;进一步分析(4),不难看出若把所得到的结果10010110和00100010再作一次XOR操作: | |||||||||||||||||||||
10010110 | |||||||||||||||||||||
XOR) 00100010 | |||||||||||||||||||||
10110100 | |||||||||||||||||||||
又能得到了已知的数。即取反后的数位又重新恢复原状态。因此我们说,XOR操作可以反复改变给定数中的特定位状态。 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |