位運算實現兩個整數的加法運算

2021-07-02 05:01:17 字數 439 閱讀 2251

最近在看一本《程式設計師面試寶典》

在程式設計基本概念這一章中多次出現了按位與,異或等二進位制的計算,下面這道題就是其中之一

先放**

#include

int add(const int& a,const int& b)

if(b==0)

return a;//設定遞迴退出條件

else

int sum,carry;

sum=a^b;//首先將a,b相異或

carry=(a&b)<<1;//然後將a,b相與之後左移一位

return add(sum,carry);//把之前的兩個值放入遞迴

第一步異或的加法,實現的是按位0與0,1與0的加法,1與1和為0;

第二步相與,實現的是1與1的情況下則按位進製;

第三步實現遞迴,把進製一直左移,直到沒有進製,則可完成計算。

用位運算實現兩個整數的加減乘除運算

位運算的思想可以應用到很多地方,這裡簡單的總結一下用位運算來實現整數的四則運算。整數加法 int add int a,int b return a 我的思路主要是利用a 1的位運算就是最左端 從第0位開始向左 連續的1變為0,原先a中為0的位置最低那一位變為1。在不同的位上加1,那就是從相應的位開始...

用位運算實現兩個整數的加減乘除運算

位運算的思想可以應用到很多地方,這裡簡單的總結一下用位運算來實現整數的四則運算。1.整數加法 cpp view plain copy intadd inta,intb return a 我的思路主要是利用a 1的位運算就是最左端 從第0位開始向左 連續的1變為0,原先a中為0的位置最低那一位變為1。...

用位運算實現兩個整數的加減乘除運算

位運算的思想可以應用到很多地方,這裡簡單的總結一下用位運算來實現整數的四則運算。1.整數加法 int add int a,int b return a 我的思路主要是利用a 1的位運算就是最左端 從第0位開始向左 連續的1變為0,原先a中為0的位置最低那一位變為1。在不同的位上加1,那就是從相應的位...