public class Demo {
public static void main(String[] args) {
//运用位运算的思想
//与1进行与运算可以有保留的效果 与0进行与运算可以有消除的效果
//举例 9 二进制为 0000 1001
/*如果从左到右编1到32
* 思路 和10101010进行与运算 保留奇数位 得到c
* 和01010101进行与运算 保留偶数位 得到d
* 再将c左移一位 与 d右移一位 进行异或运算
* */
//实现如下
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println(Integer.toBinaryString(x));
System.out.println(solve(x));
System.out.println(Integer.toBinaryString(solve(x)));
sc.close();
}
private static int solve(int x) {
// 完善代码
int ou = x&0xaaaaaaaa;
int ji = x&0x55555555;
int ou1 = ou>>1;
int ji1 = ji<<1;
return ou1^ji1;
}
}
11-14
656
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交