不使用加号的加法运算
2012-10-10 17:20
106 查看
//加法 int add (int a, int b) { //*递推 int c = 1; for (; c ^ 0; ) //循环条件为:0 != c { c = a & b; a = a ^ b; b = c<<1; } return a; //*/ /*递归 int c = a & b; int d = a ^ b; if (c ^ 0) //若0 != c { return add(c<<1, d); } return d; //*/ }
&:位与运算符
|:位或运算符
^:位异或运算符(相同为假,即0;相异为真,即1)
~:位非运算符(按位取反,1变0,0变1)
>>:位右移
<<:位左移
a ^ b:表示a + b,但是没有进位;若进位的值为0,则a + b = a ^ b;
(a & b)<<1:得到进位的值
a + b = (a ^ b) + ((a & b)<<1):a + b的值等于a ^ b的值假上进位的值;用递归或者递推来实现该加法运算,退出条件为进位的值等于0.
相关文章推荐
- 《Cracking the Coding Interview程序员面试金典》----另类加法(不得使用+-x/运算符号)
- [Leetcode #371]Sum of Two Integers 不使用加法运算符完成加法运算
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
- 使用C++的string实现高精度加法运算的实例代码
- 使用 & ^ << 等 位符实现加法运算
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)
- 9.7数学与概率(二)——实现整数的乘法、减法和除法运算,只允许使用加号
- (PHP实现)只使用++运算实现加法,减法,乘法,除法
- C++使用string大数运算——加法
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- 使用ajax完成一个简单加法运算
- C语言如何不使用“+”号进行加法运算!
- 实现整数的乘法,减法和除法运算。只允许使用加号
- 实现整数的乘法、减法和除法运算,只允许使用加号
- 程序中不使用“+”法运算,实现整数加法运算
- 不使用加减乘除+-*/,实现加法运算(使用位运算符)
- 不使用算术运算符实现加法运算
- Ajax案例(使用ajax进行加法运算)