在面试笔试中会考到这类题目,要求不用加减乘除运算来计算两数和,其实考的就是位运算。
规则1:
如果1010+0101 = 1111在计算上不产生进位, 则1010^0101 = 1010+0101 = 1111
上面1010和 0101 二进制加法计算的特点是没有进位,所以他们的二进制加法和按位异或运算结果才会相同。但是如果如果是二进制加法运算有进位,则明显以上等价关系就不能成立。
思路:如 20(10100)+25(11001) =45二进制加法运算会产生进位,那我们把他转换成a和b两个数 满足a+b = 20+25 = 45且a和b二进制加法不会产生进位,按照规则1有 20+25 = a + b = a ^ b,明显我们可以找到一个例子 a=32(100000) b=13(001101)满足上述要求。
如何找到a 和 b:
当产生进位的时候,我们可以试着把产生进制的位置找出来, 20(10100)+25(11001) 进行按位与运算
10100&11001 = 10000 可知道在最高位是两个1相与,故在最高位产生进位,10100^11001 = 01101这个结果是不进位的结果,只要我们把不进位的异或运算加上进位时候带来的结果增量加起来,就是我们最终想要的结果10100+11001 = 101101 .
结果为:10100^11001+(10100&11001)<<1 = 01101+10000 <<1
a = 01101
b = 10000 <<1 = 100000--->左移位后的结果即为进位产生的增量
如果a b还不满足上面思路中的要求的话,在继续重复上面的过程,知道找出满足思路中的啊a,b的值。
代码如下:
#include "stdio.h" int bitAdd(int a ,int b){ printf("第一次递归 bitAdd(%d ,%d )\n",a,b ); int jin = a&b;//进位 int notJin = a^b; if (jin!=0) { return bitAdd(jin<<1,notJin); }else{ return notJin; } return 0; } int main() { int a ,b; printf("输入两个数做加法(空格隔开)\n"); scanf("%d %d",&a,&b); printf("结果:%d+%d=%d",a,b,bitAdd(a,b)); return 0; }
结果:
相关推荐
+---+---+---+---+---+---+---+---+ | | | O | | | | | | +---+---+---+---+---+---+---+---+ | | | | | O | | | | +---+---+---+---+---+---+---+---+ | | O | | | | | | | +---+---+---+---+---+---+---+---+ | | ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 单通道多帧 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
目标跟踪算法-使用yolov7+deepsort开发的多目标跟踪算法-训练+推理+项目源码+教程目标跟踪算法-使用yolov7+deepsort开发的多目标跟踪算法-训练+推理+项目源码+教程目标跟踪算法-使用yolov7+deepsort开发的多目标跟踪...
Apache+Kylin+-+Fast+Cubing+算法及性能简介
-图解算法+使用Python+-+范例程序,分享给需要的人
ACM+算法集--常用ACM算法. 代码模板!!!
B-树和B+树的C语言实现(数据结构)。
K-Means和K-Means++算法的数据集。包含了两个特征的数据集,分别为XOY坐标轴中的X坐标和Y坐标。不带有类别标签。
树状图 实现由 Mark Bruls、Kees Huizing ...+------+------+----+---+--+-+ | | | | | | | | | | | | | | | 6 | 6 | 4 | 3 | 2|1| | | | | | | | +------+------+----+---+--+-+ Squarified Treemap 算法将矩形递归地
利用数据结构中的运算符优先算法实现整数的加、减、乘、除、括号的多项式运算,运算表达式以#结尾。测试表达式如下运算: "1+(1+2)*(5+25/5)#" 利用数据结构中的运算符优先算法实现整数的加、减、乘、除、括号的...
二手车价格预测算法源码+项目说明.zip天池算法大赛-二手车价格预测算法源码+项目说明.zip天池算法大赛-二手车价格预测算法源码+项目说明.zip天池算法大赛-二手车价格预测算法源码+项目说明.zip天池算法大赛-二手车...
华中科技大学,机器学习课程... +--+ 2-机器学习之kNN算法 | | | +--- t-1.md # kNN算法原理 | +--- t-2.py # 使用 sklearn 中的kNN算法进行分类 | +--- t-3.py # 使用 sklearn 中的kNN算法进行回归 | +--- t-4.py
融360智能金融算法大赛-拒绝推断算法源码+项目说明.zip融360智能金融算法大赛-拒绝推断算法源码+项目说明.zip融360智能金融算法大赛-拒绝推断算法源码+项目说明.zip融360智能金融算法大赛-拒绝推断算法源码+项目说明...
在深度学习中bik-means算法、k-means算法和kmean++算法生成anchor框应用
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。...基于Python实现数据挖掘Apriori算法与FP-Growth算法对比测试源码+项目说明.zip
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考...FDDC2018金融算法挑战赛-A股上市公司公告信息抽取源码+学习说明.zip
2022全球人工智能技术创新大赛-算法挑战赛-商品标题实体识别源码+学习说明.zip2022全球人工智能技术创新大赛-算法挑战赛-商品标题实体识别源码+学习说明.zip2022全球人工智能技术创新大赛-算法挑战赛-商品标题实体...
推荐算法,R数据挖掘:使用数据挖掘实现全面商业智能之推荐算法+SVD推荐算法-复 旦,课件+案例数据+代码 推荐算法,R数据挖掘:使用数据挖掘实现全面商业智能之推 荐算法+SVD推荐算法-复旦,课件+案例数据+代码 推荐...
K-means算法的Matlab实现代码(使用文档+源代码),直接改写参数运行即可。