不用加號和減號來實現加減法 利用位運算

2021-10-02 22:47:33 字數 719 閱讀 2240

public

class 加減法

public

static

intplus

(int a ,

int b)

if(b ==0)

int x =

(a&b)

<<1;

//這個相當於是進製 與一下是1說明都是1,把它們左移就是全部進製的數,再和下面沒進製的一加就是結果

int y =

(a ^ b)

;//這個相當於是沒進製的,或一下是1說明只有一位是1

return

plus

(x,y);}

//其實減法相當於是加上這個數的相反數,而a的相反數等於~a+1

/*眾所周知,計算機是看補碼的所以,比如乙個數5其原碼為 0000 0000 0000 0101,而正數的原、反、補碼相同,

*~5就是 1111 1111 1111 1010,而這是補碼,要轉成十進位制,先看它的原碼,原碼 = 補碼的符號位不變各位取反加一

*即1000 0000 0000 0110 即-6,

* */

public

static

intminus

(int a,

int b)

return

plus

(a,~b+1)

;}}

不用加減號實現加減法(java實現)

背景 好久沒接觸位運算子了,拿個小題來練練手吧 不用加減號實現加減法運算,這個題目一聽就知道要用位運算子了,先複習下位運算的基本操作吧 與運算子 如果相對應位都是1,則結果為1,否則為0 或運算子 如果相對應位都是0,則結果為0,否則為1 非運算子 按位取反運算子翻轉運算元的每一位,即0變成1,1變...

不用加減法做加法

這裡只能想到位運算了,思路如下 假設a 5,b 17 對應的二進位制數即為 a 0000 0101 b 0001 0001 要想求解兩個數的和,就得分如下三步來計算 1.計算不帶進製的兩個數的和 2.計算兩個數在計算中發生的進製 3.將不帶進製的和與發生的進製求和,得出最終結果 好了,這裡我們可以來...

大數加減法(C 實現)

以下是我寫大數類的標頭檔案,cpp檔案,說明文件等,可用,但限於筆者自身水平,也有諸多不足之處,有待日後改善。不過程式是沒有問題的,可以計算大數的加減乘運算。readme.md 程式名 bignumplus 程式功能 此程式針對任意整實數的加減乘運算,支援負值的計算。程式檔案 bignum.h 定義...