題目:寫乙個函式,求兩個數之和,要求在函式體內不得使用+、-、×、÷四則運算符號。
思路:我們可以先分析一下如何做十進位制加法的,比如如何得出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這樣我們就完成了簡單的一位數...