輸入兩個數字a和b用位運算輸出a-b的值有多組直到輸入EOF...
c++ 用位運算來計算
慕碼人8056858
2018-07-29 11:00:46
TA貢獻1794條經驗 獲得超8個贊
模擬二進制運算。
加法運算:將一個整數用二進制表示,其加法運算就是:相異(^)時,本位為1,進位為0;同為1時本位為0,進位為1;同為0時,本位進位均為0。所以,不計進位的和為sum = a^b,進位就是arr = a&b,(與sum相加時先左移一位,因為這是進位)。完成加法直到進位為0.
int add(int a, int b) //遞歸形式
{
if(b==0) //遞歸結束條件:如果右加數為0,即不再有進位了,則結束。
return a;
int s = a^b;
int c = (a&b)<<1; //進位左移1位,達到進位的目的。
return add(s, c); //再把'和'和'進位'相加。遞歸實現。
}
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;
舉報