首页  > 教育解读  > 怎样实现二进制反转

怎样实现二进制反转

2025-04-30 21:18:56
彭老师
彭老师已认证

彭老师为您分享以下优质知识

实现二进制反转可以通过多种方法完成,以下是几种常见的方法及其实现方式:

一、逐位翻转法(适用于任意位数)

通过循环逐位提取原数的最低位,并将其放到结果数的最高位。具体步骤如下:

1. 初始化结果变量为0。

2. 循环32次(针对32位整数),每次将原数右移1位,最低位通过`n % 2`提取,然后与结果变量左移1位后按位或运算。

3. 循环结束后结果即为反转后的二进制数。

C++实现示例:

```cpp

class Solution {

public:

uint32_t reverseBits(uint32_t n) {

uint32_t res = 0;

for (int i = 0; i < 32; ++i) {

res = (res >

= 1;

}

return res;

}

};

```

二、分治法(按位块交换)

将32位整数分成多个块(如每2位一组),逐组交换位置。例如:

原数:`01 0111 01011101`

交换后:`10 1100 01011101`

继续交换更高位块,最终得到完全反转的数。

C++实现示例:

```cpp

class Solution {

public:

uint32_t reverseBits(uint32_t n) {

n = ((n >

>

16) & 0x0000FFFF) |

((n >

>

8) & 0x00FF00FF) |

((n >

>

4) & 0x0F0F0F0F) |

((n & 0x0000FFFF) >

8) & 0x00FF00FF) |

((n >

>

4) & 0x0F0F0F0F) |

((n & 0x00FF00FF) 4) & 0x0F0F0F0F) |

((n & 0x00F0F0F0) 1) | (n