📅  最后修改于: 2023-12-03 14:57:04.937000             🧑  作者: Mango
在计算机科学中,翻转一个数字的位可以用于许多实际问题。这个问题中,我们的目标是翻转一个二进制数字中的所有位,即将0变为1,将1变为0。
翻转一个数字的位可以通过位运算实现。通过异或运算相同数值异或得到的结果为0,0异或任何数值都是其本身。因此,我们可以使用异或运算的性质,对每一位分别进行异或操作,实现翻转。
def reverse_bits(n: int) -> int:
result = 0
for i in range(32):
result = (result << 1) | (n & 1)
n >>= 1
return result
public int reverseBits(int n) {
int result = 0;
for (int i = 0; i < 32; i++) {
result = (result << 1) | (n & 1);
n >>= 1;
}
return result;
}
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0;
for (int i = 0; i < 32; i++) {
result = (result << 1) | (n & 1);
n >>= 1;
}
return result;
}
对于给定的n,循环执行将32位取反。因此时间复杂度为O(1)。
翻转一个数字的位可以通过位运算实现,这将成为计算机科学中许多实际问题的基础。