a+b等于几(不用+)高级解法
2017-12-19 15:48
501 查看
a+b等于几——高级解法
码文不易,如果帮助到您,希望您可以下载一个压缩包,与您无害,与我有益谢谢支持原创欢迎大家阅读我的博客,如果有错误请指正,有问题请提问,我会尽我全力改正错误回答问题。在次谢谢大家。
实验环境
语言c/c++编译器devc++5.11/5.40
实验内容与要求
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 说明 a和b都是 32位 整数么? 是的 我可以使用位运算符么? 当然可以 样例 如果 a=1 并且 b=2,返回3
目录
a+b等于几——高级解法实验环境
实验内容与要求
目录
实验解析
思路
前言
高级方法
二进制四种情况运算结果对比:
函数说明
递归计算方法
非递归计算方法
主函数
结果展示
附录
相关资料
源代码
递归解法
非递归解法
码文不易,如果帮助到您,希望您可以下载一个压缩包,与您无害,与我有益谢谢支持原创
实验解析
思路
前言
简单方法确实想着简单,但是做起来还是分类挺多的,我们再来探究一下更简便的方法不相同
初级解法
高级方法
二进制四种情况运算结果对比:
a | b | 与 | 异或 | 进位加法 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 00 |
1 | 0 | 0 | 1 | 01 |
0 | 1 | 0 | 1 | 01 |
1 | 1 | 1 | 0 | 10 |
那么现在不用再一位一位运算了,可以整体与向右移位后加上异或结果,这里可以运用递归。
函数说明
递归计算方法
int calculate(int a,int b){ int sum =0,carry=0; if(a==0){ return b; } if(b==0){ return a; } sum = a^b; carry = a&b; carry = carry<<1; //左移 return calculate(sum,carry); }
非递归计算方法
int calculate(int a,int b){ int sum =0,carry=0; while(true) { if(a==0){ return b; } if(b==0){ return a; } sum = a^b; carry = a&b; carry = carry<<1; a = sum; b = carry; } }
主函数
main(){ int a,b; cin>>a>>b; cout<<calculate(a,b)<<endl; }
结果展示
附录
相关资料
参考资料源代码
递归解法
#include <iostream> using namespace std; int calculate(int a,int b); main(){ int a,b; cin 4000 >>a>>b; cout<<calculate(a,b)<<endl; } int calculate(int a,int b){ int sum =0,carry=0; if(a==0){ return b; } if(b==0){ return a; } sum = a^b; carry = a&b; carry = carry<<1; return calculate(sum,carry); }
非递归解法
#include <iostream>
using namespace std;
int calculate(int a,int b);
main(){
int a,b;
cin>>a>>b;
cout<<calculate(a,b)<<endl;
}
int calculate(int a,int b){ int sum =0,carry=0; while(true) { if(a==0){ return b; } if(b==0){ return a; } sum = a^b; carry = a&b; carry = carry<<1; a = sum; b = carry; } }
码文不易,如果帮助到您,希望您可以下载一个压缩包,与您无害,与我有益谢谢支持原创
相关文章推荐
- 10年跳槽经验总结 高级人才不用找工作
- Combination Sum II [leetcode] 不用set的解法
- HDU-1237 简单计算器(使用栈和不用栈的解法)
- 麻麻再也不用担心block布局啦。仅限高级浏览器,ie直接被忽视
- 六、初学Java多线程:慎重使用volatile关键字(看完感觉是不是就等于不用?)
- a+b等于几(不用+)
- 《编程之美》 - 3.1 字符串移位包含的问题( 不用strstr()的解法 )
- 不用软件,对回收站删除文件后的恢复(windows 高级技巧)
- 10年跳槽经验总结 高级人才不用找工作
- 真正的高级人才不用找工作
- java 数组中两两相加等于某个数的组合种数 蛮力解法 排序解法
- 如果业界中不用高级算法和数据结构,那为什么还要学?
- 10年跳槽经验总结 高级人才不用找工作
- 10年跳槽经验总结 高级人才不用找工作
- 10年跳槽经验总结 高级人才不用找工作
- 转贴:10年跳槽经验总结 高级人才不用找工作
- 10年跳槽经验总结 高级人才不用找工作 (转)
- 关于前N数求等于X的递归解法(C语言)
- 01背包问题(当有的背包重量是非整数时)的递归(优化成动态规划+再用滚动数组优化)解法+一些动态规划(递归,搜索)的高级技巧
- 同学你好, google到你的帖子,想问下为什么你的解法不用考虑到2个数相同的情况?比如4,4,8...