經常看到類似」不使用***符號的前提下,實現加、減、乘、除「?第一次遇見的同學可能會懵,如果你記起來乙個叫位運算的東西就會豁然開朗了。
加法:比如5+6。小學的時候數學老師告訴我們的是,先求不算進製的值,也就是1,然後再將進製結果(這裡是1)加入,直到進製為0。使用位運算也是同樣的道理。只不過我們對於進製和不進製的結果的產生感到陌生而已。
位運算中兩個數相加的不進製結果:a^b,進製結果a&b;之後取a&b左移一位後的結果和a^b相加,如此一直加下去,直到進製為0,此時就能得到結果。
減法:減法其實也是屬於加法,因為a-b=a+(-b);於是首先需要將b取相反數,位運算中只要將b位取反後加上1即可,b=~b加1。
乘法:乘法就是多次的加法而已,這裡不再累述。
除法:就是多次的減法,直到被除數小於等於0。
public
class solution3
return sum;
}public
intminus(int a, int b)
public
intmulti(int a, int b)
return a;
}public
intdivide(int dividend, int divisor) catch (exception e)
int result = 0;
if (a > 0 && b > 0)
return result;
} else
if (a < 0 && b > 0) else
if (a > 0 && b < 0) else
if (a < 0 && b < 0)
return result;
}public
static
void
main(string args) }/*
輸出:5
1210
5*/
使用位運算實現加減乘除
在不使用 四則運算符號的情況下,通過基本位運算實現加減乘除四則運算。1.c 中使用位運算實現加法 首先,我們通過對x和y進行 位運算,得出每一位上的進製。然後對x和y進行 位運算,得出沒有加進制的和。最後將所得的和當做新的x,所得的進製往左移一位 第零位的進製輸入為0 當做新的y,繼續做上面的步驟,...
位運算實現加減乘除
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為進製...