C 位運算實現加減乘除

2021-09-26 20:50:10 字數 1070 閱讀 3165

近日複習劍指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。...