位运算实现一些小算法

package com.asiainfo.cem_volte_hbase;

/**
 * @ClassName Test
 * @Description  有意思的小算法
 * @Author qianxl
 * @Date 2019-08-02 17:34
 * @Version 1.0
 **/
public class Test {
 /**
   *
* @param num1
* @param num2
   * @description: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
   * @return:
   * @author qianxl
   * @date: 2019/8/2 18:22
   * @since 1.0
   */

  public static  void add(int num1, int num2){
      int temp = 0;
      while (num1 != 0){
        temp = num1 ^ num2;
         num1 = (num1 & num2) << 1;
         num2 =temp;
      }
      System.out.println(num2);
  }
 /**
   *
  * @param n
   * @description: 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
   * @return: {@link int}
   * @author qianxl
   * @date: 2019/8/2 18:43
   * @since 1.0
   */
  public int  sum(int n) {
   int sum =n;
   boolean t = n!=0 && (sum +=sum(n-1)) !=0;
   return  sum;
  }

  public static int sum2(int n) {
      if (n == 0) {
          return  n;
      }else{
          int sum = sum2(n-1) +n;
          return  sum;
      }
  }
  /**
    *
   * @param num1
   * @param num2
    * @description:  写一个函数,求两个整数之差,要求在函数体内不得使用+、-、*、/四则运算符号
    * @return: {@link int}
    * @author qianxl
    * @date: 2019/8/2 19:29
    * @since 1.0
    */

  public static  int  miners (int num1, int num2) {
      return  num1 ^ num2;
  }

    public static void main(String arg[]){
       add(3, 4);
        int i = sum2(5);
        System.out.println(i+"结果");
        int miners = miners(7, 6);
        System.out.println(miners + "减法 ");
    }
}

https://mp.weixin.qq.com/s/PKzgPN4CdCD40saDOfRGlA

猜你喜欢

转载自blog.csdn.net/JHON07/article/details/98229324