奇妙的位运算

位运算之奇偶位的互换

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);

}

上一篇下一篇

猜你喜欢

热点阅读