目前为止只有一种思路:位运算+递归小操作

a+b的值可以等价于a^b+(a&b)<<1,也就是a异或b的值加上a与b的值再左移一位。a异或b的值被叫做非进位求和,(a&b)<<1是求每位的进位。举个例子就明白为什么是这样了。

比如计算5+4,对于二进制而言,100+101=1001,产生了进位。那么,100101=001,100&101=100,左移一位就是1000(你算出是100吗?这里要注意,左移必须在右边补0),所以,1000+001=1001,5+4正好是9.我是这么理解的。下面举个两位数的,原理是一样的。13+9,11011001=0100,1101&1001=1001,左移一位就是10010,10010+0100=10110,正好是22.

但是上面还是出现了进位和非进位的和,但是不能用加法直接相加。这里用到了一个小技巧,递归操作。递归的终止条件是进位为0,返回非进位和。举个最简单的例子就行了,比如 2+3 ,进位是不是0,整个和是不是非进位和?

简单的代码:

'''

 class Solution {
public:
int add(int a, int b) {
if(b==0)
return a;
int c=a^b;
unsigned int d =((unsigned int)(a&b)<<1);
return add(c, d);
}
};

如何不用加法符号计算a+b 的值?的更多相关文章

  1. hibernate部分源码解析and解决工作上关于hibernate的一个问题例子(包含oracle中新建表为何列名全转为大写且通过hibernate取数时如何不用再次遍历将列名(key)值转为小写)

    最近在研究系统启动时将数据加载到内存非常耗时,想着是否有办法优化!经过日志打印测试发现查询时间(查询时间:将数据库数据查询到系统中并转为List<Map>或List<*.Class& ...

  2. 《剑指offer》面试题65. 不用加减乘除做加法

    问题描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 示例: 输 ...

  3. C# .net中cookie值为中文时的乱码解决方法

    一.cookie的名称或子cookie的名称不能为中文,否则无法获得cookie 这个好办,名称不用中文即可 二.cookie的值为中文时候,取cookie的值会出现乱码 解决办法:存取cookie时 ...

  4. 【工作代码】复杂 JSON 值替换处理

    总结下最近的工作遇到的点:入参复杂 JSON 层层嵌套,Java 怎么优雅的处理. 一.关于 JSON JSON 是类似 XML 用于存储和交互文本信息.但优于 XML ,其更小,更快,更易懂和解析. ...

  5. C++ 11中的右值引用以及std::move

    看了很多篇文章,现在终于搞懂了C++ 中的右值以及std::move   左值和右值最重要的区别就是右值其实是一个临时的变量 在C++ 11中,也为右值引用增加了新语法,即&&   比 ...

  6. ExecuteNonQuary接收存储过程的输出类型的变量的值

    1.设置所调用的存储过程需要的参数 public decimal CreateOrder(string orderId, int userId, string address) { SqlParame ...

  7. [0] DDD领域驱动设计(二) 之 值对象

    DDD中实体对象与值对象的解释比较抽象.主要根据持续性与 ID 识别来区分. ID并非某一对象的直观自然属性,而是在分析建模之 后,赋给模型中的实体类,来达到跟踪,区别,存储目的的一个特值. 结合项目 ...

  8. 颜色的RGB值表示法

    颜色的RGB值表示法 从物理光学试验中得出:红.绿.蓝三种色光是其他色光所混合不出来的.而这三种色光以不同比例的混合几乎可以得出自然界所有的颜色. 如红光与不同比例的绿光混合可以得出橙.黄.黄绿等色: ...

  9. HihoCoder - 1483 区间最值

    给定n个数A1...An,小Ho想了解AL..AR中有多少对元素值相同.小Ho把这个数目定义为区间[L,R]的价值,用v[L,R]表示. 例如1 1 1 2 2这五个数所组成的区间的价值为4. 现在小 ...

  10. java中多个数字运算后值不对(失真)处理方法

    最近遇到一个bug ,在java里面计算两个数字相减,633011.20-31296.30 得到的结果居然是601714.8999999999,丢失精度了,原来这是Java浮点运算的一个bug. 解决 ...

随机推荐

  1. java redis api及test demo

    1.CacheService.java package com.redis.demo; import com.alibaba.fastjson.JSON; import com.alibaba.fas ...

  2. 从Purge机制说起,详解GaussDB(for MySQL)的优化策略

    本文分享自华为云社区<[华为云MySQL技术专栏]GaussDB(for MySQL) Purge优化>,作者:GaussDB 数据库. 在MySQL中,尤其是在使用InnoDB引擎时,P ...

  3. 从 Modbus 到 Web 数据可视化之 WebSocket 实时消息

    前言 工业物联网是一个范围很大的概念,本文从数据可视化的角度介绍了一个最小化的工业物联网平台,从 Modbus 数据采集到前端数据可视化呈现的基本实现思路.这里面主要涉及基于 Modbus 通讯规约的 ...

  4. 在WPF UWP WinUI中相同功能的用法的区别

    文件选择器 WPF:OpenFileDialog Microsoft.Win32.OpenFileDialog openFileDialog = new(); bool? result = openF ...

  5. 《DNK210使用指南 -CanMV版 V1.0》第一章 本书学习方法

    第一章 本书学习方法 1)实验平台:正点原子DNK210开发板 2)章节摘自[正点原子]DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com ...

  6. Three光源Target位置改变光照方向不变的问题及解决方法

    0x00 楔子 在 Three.js 中,光源的目标(target)是一种用于指定光源方向的重要元素.在聚光灯中和定向光(DirectionalLight)中都有用到. 有时我们可能会遇到光源目标位置 ...

  7. Linux-makefile命令后面的-j4 -j8是什么意思?

    其实是指在编译指定的文件时用多少个线程进行编程的意思~ 相关命令示例如下: make zImage -j8 make modules -j8 --------------------------- m ...

  8. 计算机二级考试 C语言篇

    本篇仅适用于计算机二级考试C语言篇 首先介绍一下二级考试时间问题(以本人考试2022年为例): 一. 2022年全国计算机二级考试时间   2022年全国计算机考试举办4次,(3月.5月.9月.12月 ...

  9. springboot中事务失效的一些场景以及如何应对

    @Transactional是基于AOP的,因此事务发生需要两个条件: 1.添加@Transactional注解 2.使用代理对象 失效场景:同一个类中直接调用的类方法,而被调方法带有@Transac ...

  10. DP进阶合集

    (ps:本集合为Star_F总结的dp进阶知识,持续更新~. 转载本文章需要联系我,否则视为侵权!!) 前置知识:线性dp,背包,树形dp,区间dp 内容预览: 状压dp 数位dp dp优化(前缀和, ...