不用算術運算子實現兩個數的加法 按位異或

2021-07-14 16:05:05 字數 741 閱讀 4406

對於二進位制的加法運算,若不考慮進製,則1+1=0,1+0=1,0+1=1,0+0=0,通過對比異或,不難發現,此方法與異或運算類似。因而排出進製,加法可用異或來實現。然後考慮進製,0+0進製為0,1+0進製為1,0+1進製為0,1+1進製為1,該操作與位運算的&操作相似。

那麼加法運算可以這樣實現:

1)先不考慮進製,按位計算各位累加(用異或實現),得到值a;

2)然後在考慮進製,並將進製的值左移,得值b,若b為0,則a就是加法運算的結果,若b不為0,則a+b即得結果(遞迴呼叫該函式)。

演算法**如下(非vs平台):

1

int bitadd(int a,intb)2

技巧題:實現1+2+3+4+……+n的值。

假設n=100;在vs平台下的**為:

1 #include 2 #include3

int bitadd(int a,intb)4

1213

intmain()

1420 printf("

1+2+3+…+%d = %d\n

",n,sum);

21 system("

pause");

22return0;

23 }

執行結果為:

程式執行正確。

不用算術運算子實現兩個數的加法 按位異或

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

不用算術運算子實現兩個數的加法 按位異或

對於二進位制的加法運算,若不考慮進製,則1 1 0,1 0 1,0 1 1,0 0 0,通過對比異或,不難發現,此方法與異或運算類似。因而排出進製,加法可用異或來實現。然後考慮進製,0 0進製為0,1 0進製為1,0 1進製為0,1 1進製為1,該操作與位運算的 操作相似。那麼加法運算可以這樣實現 ...

不用算術運算子實現兩個數的加法 按位異或

對於二進位制的加法運算,若不考慮進製,則1 1 0,1 0 1,0 1 1,0 0 0,通過對比異或,不難發現,此方法與異或運算類似。因而排出進製,加法可用異或來實現。然後考慮進製,0 0進製為0,1 0進製為1,0 1進製為0,1 1進製為1,該操作與位運算的 操作相似。那麼加法運算可以這樣實現 ...