首页 > 其他 > 详细

LintCode刷题笔记-- A+B problem

时间:2016-09-02 13:07:05      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:

位运算

描述

Write a function that add two numbers A and B. You should not use + or any arithmetic operators.

解题思路:

利用位运算来解决A+B的问题,可以将此问题转化为解决不进位相加和进位(carry bit)的两部分问题:

1. 首先是不进位相加:_A = A^B 先对A和B进行异或运算(XOR manupitation) , A 和B 中两位不相同的变为1,相同的变为 0, 同为1是不进位

2. 其次是进位  _B =(A&B)<<1

所以 A+B = A^B + (A&B)<<1

3.在循环中(A&B)<<1 的目的是将要进位的1一直向左移动,之后与新生成的_A进行异或运算,来进行进位运算的模拟(这一步就是进位)

4. 直到将所有的1全部向左移位为0

参考代码:

技术分享

 

LintCode刷题笔记-- A+B problem

原文:http://www.cnblogs.com/whaochen205/p/5832758.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!