a = a & ((~a) +1); //提取最右侧的1
public class ExtractRightOne {
public ExtractRightOne(int a){
String str = TenToTwo(a);
System.out.println(a + "的二进制为:" + str);
a = a & ((~a) +1); //提取最右侧的1
str = TenToTwo(a);
System.out.println(a + "最右侧的1为:" + str);
}
public String TenToTwo(int a){
// 十进制转化为二进制
int quotients = a;
int remainders = 1;
String str = "";
//商和余数: quotients and remainders
while(quotients != 0){
remainders = quotients % 2;
quotients = quotients / 2;
str = remainders + str;
}
return str;
}
public static void main(String[] args) {
int a = 34;
ExtractRightOne extractRightOne = new ExtractRightOne(a);
}
}
输出
34的二进制为:100010
2最右侧的1为:10