AcWing 85 不用加减乘除做加法
发布日期:2021-05-28 16:31:09
浏览次数:28
分类:技术文章
本文共 535 字,大约阅读时间需要 1 分钟。
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
样例
输入:num1 = 1 , num2 = 2输出:3
分析:
我们在对两个二进制数做加法的时候,相当于先对各位做异或运算,然后如果对应位是两个1,则需要进位,对应于&运算。
所以求两个数的和可以分解为先求对应位的异或结果再求对应位的与结果,将与结果左移一位得到carry再加上异或结果sum即可得到加法结果。这里的加法同样采用上述方法来解决。每次对carry左移即在末位补零,所以carry每次迭代时0的位数是在增加的,知道carry=0,即没有进位的时刻停止迭代,此时的sum即是所求的加法和。
class Solution {public: int add(int num1, int num2){ while(num2){ int sum = num1 ^ num2; int carry = (num1 & num2) << 1; num1 = sum; num2 = carry; } return num1; }};
转载地址:https://blog.csdn.net/qq_30277239/article/details/88643603 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年08月26日 01时09分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
员工管理系统二:首页和国际化实现
2019-05-24
员工管理系统三:登录+拦截器
2019-05-24
员工管理系统四:员工列表实现
2019-05-24
员工管理系统五:增删改员工实现
2019-05-24
Redis的安装与卸载
2019-05-24
项目阶段四:分页模块
2019-05-24
项目阶段四:首页的分页
2019-05-24
项目阶段五:登录登出优化
2019-05-24
项目阶段五:验证码
2019-05-24
项目阶段五:购物车
2019-05-24
项目阶段六:订单模块的数据库准备与dao、service层
2019-05-24
项目阶段六:查看我的订单模块
2019-05-24
项目阶段六:后台管理的订单模块
2019-05-24
练习——图书管理系统八(根据图书编号填充图书名称下拉控件和验证手机号)
2019-05-24
web项目使用虚拟路径读取本地图片
2019-05-24
将windows下文件上传至服务器中
2019-05-24
mysql授权限失败问题
2019-05-24