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

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

    分析:对数字做运算,最常用的就是四则运算和位运算了,这里要求不能使用四则运算,那么我们可以考虑位运算,可以用位运算来进行加法运算。首先,举两个例子:

    例1.

    12+13(1100+1101)

    1100 ^ 1101 = 0001(对应位相加,不考虑进位)

    1100 & 1101 = 1100(1代表产生进位的地方)

    11000 ^ 00001 = 11001 = 25(进位左移一位,与不考虑进位时的结果相加,不考虑进位)

    11000 & 0001 = 0(无进位,则上一步异或的结果为左后的结果)

    例2.

    15+6(1111+0110)

    1111 ^ 0110 = 1001

    1111 & 0110 = 0110

    01100 ^ 1001 = 00101

    01100 & 1001 =01000

    010000 ^ 00101 = 10101 = 21(结果)

    010000 & 00101 = 0(结束)

    实现

     1 public class Num48_Add {
     2     public int Add(int num1,int num2) {
     3         int and = num1 & num2;
     4         int xor = num1 ^ num2;
     5          
     6         while(and!=0){
     7             int temp = xor;            
     8             xor = (and<<1) ^ xor;
     9             and = (and<<1) & temp;            
    10        }
    11     return xor;
    12     } 
    13 }      
  • 相关阅读:
    python之路面向对象2
    [C#]扩展方法
    [UGUI]Text文字效果
    [UGUI]修改顶点
    [UGUI]帧动画
    [UGUI]图文混排(二):Text源码分析
    [UGUI]图文混排(一):标签制定和解析
    [Unity基础]镜头管理类
    [Unity工具]批量修改Texture
    323 XAMPP软件
  • 原文地址:https://www.cnblogs.com/alavender/p/5927515.html
Copyright © 2011-2022 走看看