不用+、-、×、÷数字运算符做加法
原文地址:http://zhedahht.blog.163.com/blog/static/254111742011125100605/
看到这个的题目第一个反应就是位运算,但是想不通怎么进行位运算,看了后面才知道,博主举了个例子就是5+17
不进位,算出5+17=12,如下图,就是小学生的运算,下面的1就是进位
这样最后12+十位的1就是22
同样,二进制也可以,5的二进制是101,17是10001,运算方法
00101
+ 10001
——————
10100
+ 10
——————
10110
最后运算就是10110就是22了
从这里也可以看出来,二进制里面,1+1和0+0,原位为0,1+0原位为1,和异或很像吧
而进位呢,对0加0、0加1、1加0而言,都不会产生进位,只有1加1时,会向前产生一个进位,而进位相当于<<一位,这样就可以开始写程序了
1 int AddWithoutArithmetic(int num1, int num2)
2 {
3 if(num2 == 0)
4 return num1;
5
6 int sum = num1 ^ num2;
7 int carry = (num1 & num2) << 1;
8
9 return AddWithoutArithmetic(sum, carry);
10 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述