• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
xiaoyaovo
博客园    首页    新随笔    联系   管理    订阅  订阅
如何不使用四则运算符计算两数相加?

题目描述

  • 描述
    输入两个整数 a 和 b,不使用四则运算符的情况下,计算两个数相加。

  • 输入与输出

输入:a = 10, b = 20 输出:30

思路

不使用四则运算符运算符,那么就只能使用位运算了。那么如何使用位于那算符呢?
核心需要做两件事

  1. 明确哪些不需要进位;
  2. 明确哪些需要进位。

例如 a = 11, b = 3;

在这里插入图片描述
明确哪些不需要进位

a ^ b = 1000;

明确哪些需要进位

a & b = 0011;

让 a & b 的结果左移一位(进位)

0110

再让 a ^ b

a ^ b = 1110; 

此时就得到了结果

代码

class Slution {
	public int add(int a, int b) {
		while (b != 0) {
			int tmp = a ^ b;
			b = (a & b) << 1;
			a = tmp;
		}
		return a;
	}

}
posted on 2021-08-08 13:03  豆本豆红枣豆奶  阅读(21)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3