近日複習劍指offer,看到了當時寫第65題題實現了位運算的加減乘除法,特此記錄int
add(
int num1,
int num2)
return num1;
}int
add2
(int num1,
int num2)
//2.一種減法運算
intnegtive
(int num1,
int num2)
//3.一種乘法運算(首先將乘數與被乘數弄為正數,最後再新增符號,而實現過程按照小學乘法演算法實施)
intmultiply
(int num1,
int num2)
//恢復符號,num1^num2為負值時表示兩者異號,相乘必為負值
//(注意《優先順序高於^,記得加括號)if(
(num1^num2)
<0)
multip =
add(
~multip,1)
;return multip;
}
//4.一種除法運算
intdivide
(int num1,
int num2)
}//恢復商符號,符號相反時,商必為負數,否則為正數
//恢復餘數符號,注意餘數是根據最後被減沒了的dividend實現的,而其符號根據被除數與除數的符號性相匹配if(
(num1^num2)
<0)
else
//當符號相同時,根據任一數的符號即可確定餘數符號
remainder =
(num1 <0)
?(add(
~dividend,1)
):(dividend)
; cout << quotient << endl;
cout << remainder << endl;
return quotient;
}
位運算實現加減乘除
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。...