Java 不使用算术运算符来计算两个数字的和

Java 不使用算术运算符来计算两个数字的和

算术运算符(如+,-,*,/)用于执行数学运算,如加法、减法、乘法、取模和除法。我们通常使用+运算符来计算两个数字的和,但是在本文中,我们将看到一些可以不使用算术运算符来计算两个数字的java程序。以下运算符最适用于此目的:

  • 递增运算符(++ - 用于将变量的值增加1。有两种类型的递增运算符:前递增和后递增。前递增运算符首先增加值,然后将其用于运算,而后递增运算符首先将其用于运算,然后增加值。对于这个程序,我们可以使用其中的任何一个运算符。

  • 按位运算符 - 这些运算符首先将操作数转换为其二进制形式,然后执行给定的操作。我们使用按位与(&)、按位异或(^)和左移(<<)运算符。

方法1:使用递增运算符

当我们将++运算符作为前缀时,它变为前递增运算符。当我们将其作为后缀时,它变为后递增运算符。

示例1

通过此示例,我们将了解前递增和后递增运算符之间的区别。我们在第5行进行后递增操作,因此“num”的值增加到10,但未分配给“num2”,我们得到“num2”的值为9。我们可以在下一行看到“num”的增加值。在第8行,由于前递增运算,将使“num”的值增加到11。因此,在下一行中,我们得到“num3”的值为11。

import java.util.*;
public class Main{
   public static void main(String[] args){
      int num = 9;
      int num2 = num++; // post increment
      System.out.println("Value of num2: " + num2);
      System.out.println("Value of num after post increment: " + num);
      int num3 = ++num; // pre increment
      System.out.println("Value of num3: " + num3);
   }
}

输出

Value of num2: 9
Value of num after post increment: 10
Value of num3: 11

添加两个数使用递增运算符

import java.util.*;
public class Main {
   public static int sum(int n1, int n2) {
      for(int i=1; i<=n2; i++) {
         n1++;
      }
      return n1;
   }
   public static void main(String[] args) {
      System.out.println("Sum = " + sum(23,5));
   }
}

输出

Sum = 28

在上面的程序中,我们创建了一个用户定义的方法’sum’,以及两个参数’n1’和’n2’,类型为整数。在该方法中,我们逐步增加’n1’的值,直到’n2’,以找到给定数字的总和。在主方法中,我们使用两个参数(n1 = 23,n2 = 5)调用’sum’方法。

方法2:使用位运算符

位与运算 检查操作数的两个位是否都为1,如果是,则返回1,否则返回0。

位与的真值表

a b a&b
0 0 0
0 1 0
1 0 0
1 1 1

按位异或 如果两个位相反,返回1,否则返回0。

异或的真值表 −

a b a^b
0 0 0
0 1 1
1 0 1
1 1 0

位移左移 运算符将操作数的位向左移动指定的位置。

x<<n,x将转换为二进制形式,然后,它的位将向左移动n个指定的位置。

步骤

  • 第1步 - 我们创建一个用户定义的方法’sum’,以及两个类型为整数的参数’n1’和’n2’。在该方法内部的while循环会一直运行,直到’n2’不等于0。

  • 第2步 - 我们对9和6进行’&’操作,并将结果以二进制形式赋值给变量’c’。

  • 第3步 - 现在,我们执行XOR操作,以便’n1’的值将更新为15(二进制中的1111)。由于左移操作后’n2’的值将变为0,while循环将停止执行并输出15作为结果。

示例

import java.util.*;
public class Main {
   public static int sum(int n1, int n2) {
      while(n2!=0){
         int c= n1 & n2; // n1 = 1001, n2 = 0110, c = 0000
         n1= n1^n2; // n1 = 1111 after XOR operation
         n2= c << 1; // n2 = 0000
      }
        return n1;
   }
   public static void main(String[] args) {
      System.out.println("Sum = " + sum(9, 6));
   }
}

输出

Sum = 15

结论

在本文中,我们展示了如何在不使用算术运算符的情况下进行两个数字的相加。我们介绍了两种方法来实现。第一种方法不适用于相加大数。第二种方法比第一种更快速和高效,因为位运算符可以在二进制表示形式中进行运算。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程