一直沒有注意位運算的使用,無意中看到利用位運算做加法,感覺比較有意思,就學習了下,感覺還挺有趣。現在簡單介紹一下,防止以後遺忘。
假設我們要計算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這樣我們就完成了簡單的一位數加...