(二)位运算,计算机不会作加法

 

AND    汇编:and C语言:& 加密

将每一位进行and运算,若是都是1那么结果为1,不然0数据

 

AND   0100 1101              C语言:  1 = 77&1计算机

           0000 0001语言

----------------------co

          0000 0001   能够判断第几位是0仍是1解密

 

OR  汇编:or  C语言 |位运算

将每一位进行or运算,其中一个是1就是1,都是0则为0

 

XOR  汇编: xor C语言^

将每一位进行xor运算,其中只有一个是1,则为1,都是1或者都是0则为0

 

Not 汇编: not C语言 ~

将每一位取反就是not运算

 

 

计算机是不会作加法的,它是经过位运算作加减乘除

4+5 = ?

0100                                    0100

0101  先作XOR 异或运算       0101   在作and 与运算

----------------------------------------------------

0001                                    0100  若是与运算所有都是0,那么结果就是刚才异或的结果,不是则再次异或和and验证结果,而且左移一位

 

0001   此次是把前面的异或结果和与 运算结果 运算

1000  这里是前面与运算的结果,结果没算完,则要左移一位再次重复前面的步奏,一直到and运算所有为0,那么异或的结果就是最终结果

-------------------

1001

 

0001   再次and运算 验证结果是否运算完毕

1000

------------

0000   所有是0了,运算完毕,那么结果就是1001  ,1001 对应的十进制就是9,这就是计算机算加法

 

乘法

3*8 = ?

咱们能够当作8 + 8 +8

那么这样就好办了,利用加法的位运算便可算出乘法,减除同理

 

用异或进行加密与解密

原数据:5AC
  秘钥:45
 
        10101100           00000101
xor  01000101   xor  01000101
---------------- --------------
       11101001             01000000 
加密后数据为  0100000011101001    40E9


解密:
        01000000                 11101001
xor  01000101         xor  01000101
--------------------------------------------
     00000101             10101100


解密后数据为  0000010110101100     05AC

 

加密就是和秘钥 进行异或运算,获得加密到的数据,

而后在用秘钥进行异或一算,就是解密的数据

相关文章
相关标签/搜索