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
Learn Java in-depth with real-world projects through our Java certification course. Enroll and become a certified expert to boost your career.
结论
在本文中,我们执行了在不使用算术运算符的情况下对两个数字进行加法的操作。我们已经看到了两种方法来做到这一点。第一种方法不适合添加两个大数字。与第一种方法相比,第二种方法是更快、更有效的方法,因为位运算符以二进制表示形式工作。