题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷
// 把相加结果分为进位和不计进位两个结果 ,这里用递归感觉容易理解
int addSum(int a, int b) {if (a == 0) return b;
// if (b == 0) return a; 最后等来的肯定是进位先为0,因为进位是靠与运算的,非进位是异或 int no_carry_num = 0, carry_num = 0; // 存非进位结果,进位结果no_carry_num = a ^ b; // 异或运算之后存储非进位 carry_num = (a & b) << 1;// 用&看此位是否向高位提供进位,最后左移把进位给高位 return addSum(carry_num, no_carry_num); // 递归进位和不计进位的值
}
2. 不用新变量,交换两个变量a、b的值 P312
基于加减法 基于异或
a = a + b; a = a ^ b;
b = a – b; b = a ^ b;
a = a – b; a = a ^ b;
本文发布于:2024-02-04 17:42:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170712861457932.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |