不用‘+’号实现两个数相加
来源:互联网 发布:人类曾经被毁灭 知乎 编辑:程序博客网 时间:2024/06/05 09:54
加法很简单,可是如何不使用'+'号怎么来实现两个数相加呢?
这个问题,实际可以通过位运算来解决,具体来说,就是将加法分解成两个部分,一个部分是不会进位的部分,另一部分就是可能产生进位的二进制位。我们只要将可能产生进制的二进制位通过位运算添加到之前不会进位的部分中去就可能得到最终的结果了。可能讲的并不太清楚,可以参考我博客中另外一篇相关的文章。
由于时间的原因,现在仅给出程序代码,大家自己想想具体怎么实现的吧。
#include <stdio.h>#include <stdlib.h>int add(int op1,int op2);int main(){ printf("%d",add(2,3)); return 0;}int add(int op1,int op2){ int tmp1,tmp2,ta,tb; tmp1=op1&op2; tmp2=op1^op2; while(tmp1) { ta=tmp2; tb=tmp1<<1; tmp1=ta&tb; tmp2=ta^tb; } return tmp2;}
下面是一种更加好理解的写法:
int add(int op1,int op2){ int sum,carry;//和和进位标志 do { carry=(op1&op2)<<1; sum=op1^op2 ; op1=sum; op2=carry; }while(op2!=0); return num1;}
- 不用+号实现两个数相加
- 不用‘+’号实现两个数相加
- 不用“+”号实现两个数的相加
- 不用+-实现两个数相加
- 不用操作符实现两个数相加
- 不用+ - * / 实现两个整数的相加
- 实现两个数的相加
- 用链表实现两个数相加
- 批处理实现两个数的相加
- 链表实现两个数相加
- 用位实现两个数的相加
- 不用(+)运算符实现两个整数相加
- 不用任何操作符实现两个正整数相加
- Hard 不用+号实现两个数之和 @CareerCup
- 两个数反转相加
- 两个超大数相加
- 两个数相加
- 两个超大数相加
- poj-2406 Power Strings睡前一水~
- Maven深入学习(四)- 知识总结
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path
- 如今建立新的CDN是一个利润丰厚的商业模式吗?
- 简单匹配算法测试
- 不用‘+’号实现两个数相加
- 图片路径
- oracle创建简单的表
- 装饰模式(Decorator)
- jsp连接sqlserver数据库
- Poj 2082(单调栈)
- C++获取文件夹所有文件,并rename重命名
- CImage类
- android 截屏代码段