位運算實現加減乘除

2021-06-26 03:41:41 字數 708 閱讀 8228

關於邏輯右移和算術右移

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為進製部分。

int add(int a,int b)

return (a^b);

}

對於減法,可轉換為加法

int rev(int a)

int sub(int a,int b)

對於乘法

a*5 = a*4+a

以下只實現了正數乘法

int mul( int a, int b )

return ret;

}

對於除法

比如12/4

12 -4*2- 4*1 = 0

只要用12減去4的各種2次冪。

以下也只實現了正數的除法

int pos_div(int a,int b)

} return ret;

}

位運算實現加減乘除

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...

位運算實現加減乘除

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

位運算實現加減乘除

資料在計算機記憶體中是以二進位制儲存的。幾種常用的位運算 與運算 對應位均為1時為1,其它為0。或運算 對應位均為0時為0,其它為1。異或運算 對應位不相同時為1,相同時為0.按位取反 每一位取反 右移 將二進位制進行右移,低位丟掉,高位補零。左移 以0111 0101為例,觀察異或運算和與運算的結...