由于位运算比普通的加减乘除效率要高很多,所以在在实际编程中应尽可能使用位运算代替加减乘除。以下总结我在编程中常用的位运算。
位运算表示乘法
int a=8;
a=a*2;
a=a<<1;
位运算表示除法
int a=8;
a=a/2;
a=a>>1;
位运算求奇偶性
int a = 8;
if (a % 2 == 0) {
System.out.println("a是偶数");
} else {
System.out.println("a是奇数");
}
if ((a & 0x1) == 0) {
System.out.println("a是偶数");
} else {
System.out.println("a是奇数");
}
位运算表示加法
加法分为三步:
- 各位相加不进位 0 + 0 =0, 0+1 = 1,1+0=1,1+1=1,可以注意到这和异或运算结果相同
- 进位 1+1 =10进位,其余均不进位 ,进行左移动一位
- 重复前两个步骤,直到不产生进位为止。
public static int Add(int num1, int num2) {
int sum = 0;
int carry = 0;
while (num2 != 0) {
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
return sum;
}