位运算之奇偶位的互换
2019-01-22 本文已影响0人
掌灬纹
题目:
输入任意十进制数,输出二进制表示形式,
并将奇数位与邻近偶数位互换并且输出十进制和二进制数。
样例:
输入:
10
输出:
1010
5
101
tip:
输入的十进制数对32位101010......做&运算得a,即可保留原偶数位,奇数位都为0
同理,原数对010101.....做&运算得b,即可保留原奇数位,偶数位都为0
a右移一位,b左移一位 在将两数做^运算即可得到所求
(Java代码如下)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(Integer.toString(a,2));
int b = m(a);
System.out.println(b);
System.out.println(Integer.toString(b,2));
}
public static int m(int i) {
int ou = i&0xaaaaaaaa;//101010....16进制表示(32位二进制太多简化为16进制)
int ji = i&0x55555555;//010101....
return (ou>>1)^(ji<<1);
}