1 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊
模擬二進(jìn)制運(yùn)算。
加法運(yùn)算:將一個整數(shù)用二進(jìn)制表示,其加法運(yùn)算就是:相異(^)時,本位為1,進(jìn)位為0;同為1時本位為0,進(jìn)位為1;同為0時,本位進(jìn)位均為0。所以,不計(jì)進(jìn)位的和為sum = a^b,進(jìn)位就是arr = a&b,(與sum相加時先左移一位,因?yàn)檫@是進(jìn)位)。完成加法直到進(jìn)位為0.
int add(int a, int b) //遞歸形式
{
if(b==0) //遞歸結(jié)束條件:如果右加數(shù)為0,即不再有進(jìn)位了,則結(jié)束。
return a;
int s = a^b;
int c = (a&b)<<1; //進(jìn)位左移1位,達(dá)到進(jìn)位的目的。
return add(s, c); //再把'和'和'進(jìn)位'相加。遞歸實(shí)現(xiàn)。
}
int add(int a, int b) //非遞歸形式
{
int s, c;
while(b != 0)
{
s = a^b;
c = (a&b)<<1;
a = s;
b = c;
}
return a;
- 1 回答
- 0 關(guān)注
- 771 瀏覽
添加回答
舉報