LintCode刷題筆記-- A+B problem


標簽:

位運算

描述

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

參考代碼:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM