不用加减法做加法
来源:互联网 发布:mt4外汇交易系统源码 编辑:程序博客网 时间:2024/05/27 20:37
/* 这里只能想到位运算了,思路如下: 假设a = 5,b = 17; 对应的二进制数即为: a:0000 0101 b:0001 0001 要想求解两个数的和,就得分如下三步来计算: 1.计算不带进位的两个数的和 2.计算两个数在计算中发生的进位 3.将不带进位的和与发生的进位求和,得出最终结果 好了,这里我们可以来分这三步,对两个数求和过程进行分析: 1.计算不带进位的两个数的和 其结果即为:0000 0101 ^ 0001 0001 -------------- 0001 0100 2.计算两个数在计算中发生的进位 2.1 其结果即为:0000 0101 & 0001 0001 -------------- 0000 0001 左移后,结果为0000 0010 3.将不带进位的和与发生的进位求和 其结果即为:0001 0100 + 0000 0010 -------------- 0001 0110 则结果即为:22*/#include <iostream>using namespace std;int add(int a,int b){ if(b==0) return a; int sum = a^b;//计算不带进位的和 int carry = (a&b)<<1;//进位计算 return add(sum,carry);//进位与不带进位和相加,直到无进位为止}int main(){ int a,b; while(cin>>a>>b) { cout<<add(a,b)<<endl; } return 0;}
阅读全文
0 0
- 不用加减法做加法
- 不用加法做加法。。
- 不用+,-,×,/做加法
- 不用+,-,×,/做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- LabView——计算三角形面积
- java鬼混笔记:jsp上传文件不跳转页面
- 游戏中的碰撞检测
- Perfect Squares
- Android iptables使用
- 不用加减法做加法
- Leetcode485. Max Consecutive Ones
- 移动端自动化主力 之 Appium
- 【dp每一天】HDU
- 笔记
- 51Nod 1089 最长回文子串 V2(Manacher算法)
- 【Shawn-Git】gitlub的使用指导(针对六届软件杯)
- python 一些常用函数笔记
- iOS学习之路--通过APP边学编写(四)原型