题目:编写程序,交换某个整数的奇数位和偶数位,使用指令越少越好。
解法:这道题目解法有很多,比较简单的方法就是提取奇数位右移一位,再提取偶数位左移一位,这样正好错位,最后”位或“就可以了。提取奇数位可以用10101010这样的二进制数,提取偶数位用01010101。
int SwapOddEvenBits(int num)
{
return ((num & 0xaaaaaaaa) >> 1) | ((num & 0x55555555) << 1);
}
题目:编写程序,交换某个整数的奇数位和偶数位,使用指令越少越好。
解法:这道题目解法有很多,比较简单的方法就是提取奇数位右移一位,再提取偶数位左移一位,这样正好错位,最后”位或“就可以了。提取奇数位可以用10101010这样的二进制数,提取偶数位用01010101。
int SwapOddEvenBits(int num)
{
return ((num & 0xaaaaaaaa) >> 1) | ((num & 0x55555555) << 1);
}