用移位操作实现乘法运算
package bit_operation;
public class MultiPlication {
//用移位操作实现乘法运算
//m*2^n
public static int power(int m,int n){
for(int i = 0;i<n;i++){
m = m<<1;
}
return m;
}
public static void main(String[] args) {
System.out.println(power(3, 3));
}
}
24
判断一个数是否为2的n次方
package bit_operation;
public class Two_N {
//判断一个数是否为2的n次方
//方法1
public static boolean isPower(int n) {
if(n<1)
return false;
int i = 1;
while (i<=n) {
if(i==n)
return true;
i = i<<1;
}
return false;
}
//方法2
public static boolean isPowerpro(int n) {
if(n<1){
return false;
}
return (n&(n-1))==0;
}
public static void main(String[] args) {
System.out.println(isPower(8));
System.out.println(isPower(9));
System.out.println(isPowerpro(8));
System.out.println(isPowerpro(9));
}
}
true
false
true
false
求二进制数中1的个数
package bit_operation;
public class Binary_1 {
// 求二进制数中一的个数
//方法一
public static int countOne(int n) {
int count = 0;
while (n > 0) {
if ((n & (1)) == 1) {
count++;
}
n = n >> 1;
}
return count;
}
//方法二
public static int countOnepor(int n) {
int count = 0;
while (n > 0) {
if(n!=0){
n = n&(n-1);
count++;
}
}
return count;
}
public static void main(String[] args) {
System.out.println(countOne(7));
System.out.println(countOne(8));
System.out.println(countOnepor(7));
System.out.println(countOnepor(8));
}
}
3
1
3
1