zoukankan      html  css  js  c++  java
  • 剑指offer65. 不用加减乘除做加法

    写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。

    题解:使用位运算

    • 计算不进位的和 sum = a ^ b;
    • 计算进位carry = a & b << 1;
    • 重复上两步a = sum; b = carry;
    class Solution {
    public:
        int add(int a, int b) {
            int sum;
            while (b != 0) {
                sum = a ^ b;
                b = ((unsigned int)(a & b) << 1);
                a = sum;
            }
            return a;
        }
    };

    注意:C++不支持负值左移,要用unsign int

    相关问题:

    不使用新的变量,交换两个变量的值

    // 基于加减法
    a = a + b;
    b = a - b;
    a = a - b;
    
    // 基于异或运算
    a = a ^ b;
    b = a ^ b;
    a = a ^ b; 
  • 相关阅读:
    集合
    3/11
    字典
    3/10
    字符串之不常用方法
    字符串的索引和切片
    数据类型的转化
    Markdown在线编辑器
    3/9
    Django:RestFramework之-------渲染器
  • 原文地址:https://www.cnblogs.com/betaa/p/12668300.html
Copyright © 2011-2022 走看看