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