(二)位運算,計算機不會作加法

 

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

 

加密就是和祕鑰 進行異或運算,獲得加密到的數據,

而後在用祕鑰進行異或一算,就是解密的數據

相關文章
相關標籤/搜索