Java程序 不使用算术运算符进行两个数字的加法

Java程序 不使用算术运算符进行两个数字的加法

算术运算符(例如+,-,*,/)用于执行数学运算,如加法,减法,乘法,模运算和除法。我们都使用“+”运算符进行两个数字的相加,但在本文中,我们将看到一些可以不使用算术运算符进行加法的Java程序。以下运算符最适合此目的 –

  * 递增运算符(++) – 用于将变量的值递增1。它有两种类型的递增和后递增。前缀递增运算符首先增加值,然后将其用于操作,而后缀递增运算符首先将其用于操作,然后增加其值。对于该程序,我们可以使用其中的任何一个运算符。

  * 位运算符 – 这些运算符首先将运算元转换为其二进制形式,然后执行给定的操作。我们使用位AND(&),XOR(^)和Left-Shift运算符(<<)。

方法1:使用递增运算符

当我们将++运算符用作前缀时,它变成前缀递增opearator。当我们将它用作后缀时,它变成后缀递增运算符。

示例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++; //后缀递增
      System.out.println("Value of num2: " + num2);
      System.out.println("Value of num after post increment: " + num);
      int num3 = ++num; //前缀递增
      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:使用位运算符

  位AND检查运算元的两个位是否均为1,然后返回1,否则返回0。

AND的真值表

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

位XOR返回1,如果两个位为相反数,否则为0。

XOR的真值表 –

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

位左移运算符将运算元的位向左移动指定位置。

x << n,将x转换为二进制形式,然后其位将移动到由n指定的位置的数字。

算法

  * 步骤1 – 我们创建一个带有两个类型为整数的参数“n1”和“n2”的用户定义的方法“sum”。在此方法中的while循环将运行,直到“n2”不等于0。

  * 步骤2:我们在9和6之间执行“&”运算并将结果以二进制形式分配给carry变量“c”。

  * Step3 – 现在,我们执行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 XOR运算后
         n2= c << 1; // n2 = 0000
      }
        return n1;
   }
   public static void main(String[] args) {
      System.out.println("Sum = " + sum(9, 6));
   }
}

输出

Sum = 15

结论

在本文中,我们执行了不使用算术运算符的两个数字的加法。我们看到了两种方法来实现它。第一种不适用于添加两个大数字。与第一个相比,第二种方法更快,更有效,因为位运算符按二进制表示形式工作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Java 示例