C語言 位運算加法

2021-10-05 03:34:37 字數 667 閱讀 5174

學習了位運算後總想著怎麼把它用在程式中,奈何知識量有限,在這裡便寫乙個位運算實現兩數之和的功能》

首先我們得先了解位運算的三個基本操作符:

&按位與—(有0為0,雙1位1 )

i按位或—(有1為1,雙0為0)

^按位異或—(不同為1,相同為0)

接下來我們想要用位運算解決兩數之和,得先知道他們的二進位制形式。

例如:2+3=5

20010

30011

50101

不難看出第二位發生了進製,那麼我們怎麼用符號實現呢:

(2 & 3)<<1

(0010 & 0011)<<1 = 0100

2^30010 ^0011 = 0001

50100^0001 = 0101

雖然上述看似成立了,但是運算起來仍然有問題,這裡僅僅考慮到了單次進製,假設有多次進製那麼這個等式便不成立。

而很自然的想到連續進製那麼就會聯想到迴圈,下面這個**便用了迴圈實現多次進製:

#include

intmain()

printf

("%d + %d = %d\n"

, x, y, x ^ y)

;return0;

}

上述**中的while的條件很好的讓所有的進製都能進行。

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,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 ...