利用位運算做加法

2021-07-25 05:44:12 字數 526 閱讀 5324

一直沒有注意位運算的使用,無意中看到利用位運算做加法,感覺比較有意思,就學習了下,感覺還挺有趣。現在簡單介紹一下,防止以後遺忘。

假設我們要計算1+2的和,其中1的二進位制表示為01,2的二進位制為10。二進位制的加法主要分為三步:

對1和2的二進位制進行異或(相等為0,不相等為1,即0^0=0,0^1=1)得11。

對1和2的二進位制進行位與(都為1時才為1,即1&1=1,1&0=0)得00,然後向左移動一位。

對1、2步的結果相加,然後重複1、2步,直到不產生進製為止。

下面用一段**演示:

#include 

using

namespace

std ;

int addfun(int num1 , int num2) ;

int main()

int addfun(int num1 , int num2)

while (num2 != 0);

return sum ;

}

利用位運算的特點做加法

題目 寫乙個函式,求兩個數之和,要求在函式體內不得使用 四則運算符號。思路 我們可以先分析一下如何做十進位制加法的,比如如何得出5 17 22這個結果。分三步 只做各位相加不進製,結果為12。考慮進製,進製值為10。把第一步和第二步的結果相加,相當於是乙個規模更小的加法,重複第一二步。模擬到二進位制...

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下 1 1 01 0 1 0 1 10 0 0很明顯這幾個表示式可以用位運算的 來代替,如下 1 1 01 0 1 0 1 10 0 0這樣我們就完成了簡單的一位數...

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下1 1 01 0 1 0 1 10 0 0 很明顯這幾個表示式可以用位運算的 來代替,如下1 1 01 0 1 0 1 10 0 0這樣我們就完成了簡單的一位數加...