利用位運算的特點做加法

2021-08-19 23:28:43 字數 560 閱讀 4453

題目:寫乙個函式,求兩個數之和,要求在函式體內不得使用+、-、×、÷四則運算符號。

思路:我們可以先分析一下如何做十進位制加法的,比如如何得出5+17=22這個結果。分三步:

只做各位相加不進製,結果為12。

考慮進製,進製值為10。

把第一步和第二步的結果相加,相當於是乙個規模更小的加法,重複第一二步。

模擬到二進位制,第一步用異或運算實現,第二步先做位與然後再左移一位,第三步做加法。

#include/*

**位運算做加法

*/int

myadd(int num1, int num2)

while (num2 != 0);//沒有進製為止。

本程式在vs2017下執行通過

利用位運算做加法

一直沒有注意位運算的使用,無意中看到利用位運算做加法,感覺比較有意思,就學習了下,感覺還挺有趣。現在簡單介紹一下,防止以後遺忘。假設我們要計算1 2的和,其中1的二進位制表示為01,2的二進位制為10。二進位制的加法主要分為三步 對1和2的二進位制進行異或 相等為0,不相等為1,即0 0 0,0 1...

不用加減乘除做加法(利用位運算)

寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。輸入 num1 1 num2 2 輸出 3 模擬加法器 o 1 不使用加減乘除來進行加法運算,我們可以模擬計算機的加法器實現。舉個例子 14 8 14的二進位制表示 1110 8的二進位制表示 1000 我們將整個運算分為兩步,1 進...

位運算 實現加法

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