位運算如何實現加減乘除

2021-08-18 18:57:20 字數 950 閱讀 5683

關注二進位制的加法,我們容易發現這樣的乙個規律:

(1)位運算異或與求和運算結果一致

異或邏輯運算:1^1=0,1^0=1,0^1=1,0^0=0

求和算術運算:1+1=0,1+0=1,0+1=1,0+0=0

(2)位運算與邏輯運算與求「進製」的結果一致。

與邏輯運算:1&1=1,1&0=0,0&1=0,0&0=0

求進製運算:1+1=1,1+0=0,0+1=0,0+0=0

1.位運算實現加法運算:設定乙個變數儲存被加數a和b的「和」,然後對a與b進行與運算並左移一位,再將temp值賦值與a,重複上述操作直至b為0時返回a,此時a即為目標值。

2.位運算實現減法運算:由於a-b等價於a+(-b),所以我們可以先將b轉換為補碼形式,然後呼叫加法函式便可實現減法運算。

3.位運算實現乘法運算:我們知道,a*b其實就是等價於b個a相加,所以,我們可以利用這個特點,對a進行累加b次,便可以實現乘法運算。

4.位運算實現除法運算:為了實現除法運算,我們可以設定乙個累加器result,當result與除數b的乘積大於被除數a時跳出迴圈,否則result+1後繼續比較。當跳出了迴圈,即意味著者此時的result-1則為目標值。

/*

位運算實現加減乘除

*/#include //加法函式

int add(int a,int b)

return a;

}//減法函式

int sub(int a,int b)

//乘法函式

int mul(int a,int b)

return sum;

}//除法函式

int division(int a,int b)

while(1)

result++;

} return result-1;

}int main()

位運算實現加減乘除

include include 加法運算 int add int a,int b 補碼中正數轉負數的原理 int negative int a 減法運算 int sub int a,int b 判斷正負 bool isnegative int a 僅計算正數乘法 int multi help int...

位運算實現加減乘除

關於邏輯右移和算術右移 vs中,對於unsigned型別,是邏輯右移,對於signed,算術右移 加法器的實現 對於不考慮進製的加法 0 0 0 1 0 1 0 1 1 1 1 0 即是異或運算 考慮進製 0 0 1 0 0 0 1 0 1 1 1 即是與運算 以下程式,a即不考慮進製部分,b為進製...

位運算實現加減乘除

位運算的思想可以應用到很多地方,這裡簡單的總結一下用位運算來實現整數的四則運算。1.整數加法 cpp view plain copy intadd inta,intb return a 我的思路主要是利用a 1的位運算就是最左端 從第0位開始向左 連續的1變為0,原先a中為0的位置最低那一位變為1。...