(32位汇编 二)二进制的逻辑运算

1. 或(or |)

只要有一个为1,就为1。

2. 与(and &)

两个都为1,就为1。

3. 异或(xor ^)

两个不一样时,就为1。

4. 非(not !)

1是0,0是1。

提示: CPU计算的本质就是逻辑运算


逻辑运算的具体应用

1. CPU如何计算2 + 3

图1 cpu如何实现2 + 3
图1 cpu如何实现2 + 3

2. 如何获取某个值的第n位的(二进制)值是多少?

例如:如何获取0x8F的第3位的二进制值是多少?(在16位机器上)
方法解析:
1. 先取0000 0000,然后将第3位设置为1,即0000 0100
2. 将0x8F用二进制表示 1000 1111
3. 将两个二进制进行‘与’运算
        1000 1111
    &   0000 0100
-----------------------
        0000 0100
4. 看‘与’的结果的第n位是多少,则原数中第n位的二进制值就是多少

3. 最简单的加密算法

条件:在16位机器上
要加密的数据:2017
密钥:9
每两位进行一次加密
    0010 0000                0001 0111
^   0000 1001           ^    0000 1001
------------------      ------------------------
    0010 1001                0001 1110
加密结果:29                     1E

    0010 1001                0001 1110
^   0000 1001           ^    0000 1001
------------------      ------------------------
    0010 0000                0001 0111
解密结果:20                      17

猜你喜欢

转载自blog.csdn.net/pl20140910/article/details/78227127