标签:ret 实现 内容 int span 上进 规律 out pre
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
二进制中,两个数相加有如下的规律
所以有如下解法:
#include <iostream> using namespace std; class Solution { public: int add(int num1,int num2); }; int Solution::add(int num1,int num2) { int sum=0,carry=0; do { sum=num1^num2; carry=(num1&num2)<<1; num1=sum; num2=carry; }while(num2!=0); return num1; } int main() { Solution s; cout<<s.add(3,3)<<endl; return 0; }
不定义新的变量交换两变量的值。
1.基于加法
void swqp(int a,int b) { a=a+b; b=a-b; a=a-b; }
2.基于异或运算
void swap(int a,int b) { a=a^b; b=a^b; a=a^b; }
用这个办法交换2个指针的内容.那么你要先检查2个指针指向的地址是否相同.不然会导致内容被清0
标签:ret 实现 内容 int span 上进 规律 out pre
原文地址:https://www.cnblogs.com/tianzeng/p/10326705.html