题目描述
请编写程序交换一个数的二进制的奇数位和偶数位。(使用越少的指令越好)
给定一个int x,请返回交换后的数int。
测试样例:
10
返回:5
解题思路:
(1)先操作奇数位,把101010(即0xAA)作为掩码,提取奇数位,并右移1位到偶数位置
(2)操作偶数位,把010101(即0x5555)作为掩码,提取偶数位,并左移一位到奇数位置
(3)将两次操作结果合并成一个值。
代码如下:
public int exchangeOddEven(int x) {
// write code here
int odd = x&(0xaaaaaaaa);
int even = x&(0x55555555);
return ((odd>>1) | (even<<1));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)