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