Swap all odd and even bits
2013-06-09 14:11
686 查看
reference:
http://www.geeksforgeeks.org/swap-all-odd-and-even-bits/Problem Definition:
Given an unsigned integer, swap all odd bits with even bits. For example, if the given number is 23 (00010111),it should be converted to 43 (00101011). Every
even position bit is swapped with adjacent bit on right side (even position bits are highlighted in binary representation of 23), and every odd position bit is swapped with adjacent on left side.
Solution:
Let the input number be x1) Get all even bits of x by doing bitwise and of x with 0xAAAAAAAA.The number 0xAAAAAAAA is a 32 bit number with all even bits set as 1 and all odd bits as 0.
2) Get all odd bits of x by doing bitwise and of x with 0x55555555.The number 0x55555555 is a 32 bit number with all odd bits set as 1 and all even bits as 0.
3) Right shift all even bits.
4) Left shift all odd bits.
5) Combine new even and odd bits and return.
Code:
unsigned int swapBits(unsigned int x) { // Get all even bits of x unsigned int even_bits = x & 0xAAAAAAAA; // Get all odd bits of x unsigned int odd_bits = x & 0×55555555; even_bits >>= 1; // Right shift even bits odd_bits <<= 1; // Left shift odd bits return (even_bits | odd_bits); // Combine even and odd bits }
相关文章推荐
- [CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位
- Q5.6 swap odd and even bits
- Algorithm: Make all the odd numbers precede all the even numbers in an array.
- Codeforces 621A Wet Shark and Odd and Even
- A. Wet Shark and Odd and Even
- CodeForces 621 A Wet Shark and Odd and Even
- 【CodeForces】[621A]Wet Shark and Odd and Even
- Algorithm: Make all the odd numbers precede all the even numbers in an array.
- A even and odd(13.7.6)
- Rearrange int array to put odd number to left and even to right
- [剑指offer][第三章][14]Partition Array by Odd and Even
- [CrackCode] 5.1 Set all bits between i and j in N equal to M
- Codeforces Round #341 Div.2 A. Wet Shark and Odd and Even
- Partition Array by Odd and Even
- Partition Array by Odd and Even 解题报告
- UVA 12683 Odd and Even Zeroes(数学—找规律)
- cf-A. Wet Shark and Odd and Even(水)
- 4k HDR – 8 bit, 10 bit, 12 bit, and all the bits you need to know
- Even and Odd Functions
- 2016.13周 周练A - Wet Shark and Odd and Even【CF】