最近在看一本《程式設計師面試寶典》
在程式設計基本概念這一章中多次出現了按位與,異或等二進位制的計算,下面這道題就是其中之一
先放**
#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,那就是從相應的位...