📅  最后修改于: 2023-12-03 15:27:37.720000             🧑  作者: Mango
在编程中,经常需要对数字进行操作,例如反转数字的位,即将其高位与低位颠倒。本文将介绍如何编写一个高效的C程序以反转数字的位。
这种方法是最简单但不一定最高效的方法。它的基本思想是从原始数字的最低位开始,将每个位上的数字依次反转到新数字的对应位上。
#include <stdio.h>
int reverse(int n) {
int r = 0;
while (n != 0) {
r = r * 10 + n % 10;
n /= 10;
}
return r;
}
int main() {
int n = 12345;
int r = reverse(n);
printf("%d\n", r); // 输出54321
return 0;
}
这种方法是更高效的方法,它使用位运算符来实现数字反转。它的基本思想是从原始数字的最低位开始,将每个位上的数字依次反转到新数字的对应位上。这个方法同样可以用于反转小数位。
#include <stdio.h>
unsigned int reverse(unsigned int n) {
unsigned int r = 0;
int i;
for (i = 0; i < 32 && n; ++i) {
r |= (n & 1) << (31 - i);
n >>= 1;
}
return r;
}
int main() {
unsigned int n = 0xF0000000;
unsigned int r = reverse(n);
printf("%x\n", r); // 输出0000000F
return 0;
}
在本文中,我们介绍了两种不同的方法来反转数字的位。第一种方法是逐位反转数字,它简单但不一定高效。第二种方法是使用位运算符来反转数字,它相对于第一种方法更高效。