用位運算實現加法和減法

2021-08-05 21:02:03 字數 2231 閱讀 8346

用位運算實現加法和減法

位運算異或可以實現沒有進製的加法,比如3+4.他們的二進位制分別為

00000000 00000000 00000000 00000011

00000000 00000000 00000000 00000100

3^4的結果為

00000000 00000000 00000000 00000111

轉換為2進製為7.但是,要想實現有進製的加法就需實現進製。例如7和9的二進位制分別為

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00001001

7^9的二進位制為

00000000 00000000 00000000 00001110

7&9<<1的結果為

00000000 00000000 00000000 00000010

結果不為0,存在進製。把7^9的值存入a, (7&9)<<1的值存入b。a^b的結果為

00000000 00000000 00000000 00001100

(a&b)<<1的結果為

00000000 00000000 00000000 00000100

把a^b的值存入a,把(a&b)<<1的值存入b。a^b的結果為

00000000 00000000 00000000 00001000

(a&b)<<1的結果為

00000000 00000000 00000000 00001000

把a^b的值存入a,把(a&b)<<1的值存入b。a^b的結果為

00000000 00000000 00000000 00000000

(a&b)<<1的結果為

00000000 00000000 00000000 00010000

把a^b的值存入a,把(a&b)<<1的值存入b。a^b的結果為

00000000 00000000 00000000 00010000

(a&b)<<1的結果為

00000000 00000000 00000000 00000000

把a^b的值存入a,把(a&b)<<1的值存入b。b的值為0,進製結束,把a轉換為二進位制為16,結果正確。

實現**

#include

#include

int add(int a, int b)

while (carry);

return a;

}int main()

要實現位運算減法,只需要把加法轉化為減法,比如a+b可以轉換為a+(-b)同時可以轉換為,a+(~b+1)。比如-3的二進位制為

10000000 00000000 00000000 00000011

-3的補碼為

11111111 11111111 11111111 11111101

3的二進位制為

00000000 00000000 00000000 00000011

~3+1的二進位制為

11111111 11111111 11111111 11111101

~3+1的二進位制和-3的補碼相同,說明他們相等。所以只需呼叫剛剛寫好的加法程式,便可完成減法操作,**如下

#include

#include

int add(int a, int b)

while (carry);

return a;

}int subtract(int a, int b)

int main()

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下 1 1 01 0 1 0 1 10 0 0很明顯這幾個表示式可以用位運算的 來代替,如下 1 1 01 0 1 0 1 10 0 0這樣我們就完成了簡單的一位數...

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下1 1 01 0 1 0 1 10 0 0 很明顯這幾個表示式可以用位運算的 來代替,如下1 1 01 0 1 0 1 10 0 0這樣我們就完成了簡單的一位數加...

位運算實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下 1.1 1 0 2.1 0 1 3.0 1 1 4.0 0 0 很明顯這幾個表示式可以用位運算的 來代替,如下 1.1 1 0 2.1 0 1 3.0 1 1 ...