由于位運(yùn)算比普通的加減乘除效率要高很多,所以在在實(shí)際編程中應(yīng)盡可能使用位運(yùn)算代替加減乘除惩歉。以下總結(jié)我在編程中常用的位運(yùn)算。
位運(yùn)算表示乘法
int a=8;
a=a*2;
a=a<<1;
位運(yùn)算表示除法
int a=8;
a=a/2;
a=a>>1;
位運(yùn)算求奇偶性
int a = 8;
if (a % 2 == 0) {
System.out.println("a是偶數(shù)");
} else {
System.out.println("a是奇數(shù)");
}
if ((a & 0x1) == 0) {
System.out.println("a是偶數(shù)");
} else {
System.out.println("a是奇數(shù)");
}
位運(yùn)算表示加法
加法分為三步:
- 各位相加不進(jìn)位 0 + 0 =0俏蛮, 0+1 = 1,1+0=1,1+1=1撑蚌,可以注意到這和異或運(yùn)算結(jié)果相同
- 進(jìn)位 1+1 =10進(jìn)位,其余均不進(jìn)位 搏屑,進(jìn)行左移動(dòng)一位
- 重復(fù)前兩個(gè)步驟争涌,直到不產(chǎn)生進(jìn)位為止。
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;
}