将一个无符号整形32位数按位逆序
我的方案如下,大家有啥好的方法,讨论讨论啊
#include<stdio.h>int main(){unsigned int n = 0xFF008881;unsigned int tmp;unsigned int maskl = 0x1;unsigned int maskh = 0x80000000;unsigned int rst = 0;int i,j;printf("n = %x\n",n);for(i = 0; i <= 15; i++) { tmp = n & maskl; maskl = maskl << 1; for(j = i + 1; j <= 31 - i; j++) { tmp = tmp << 1; } rst = tmp | rst; }for(i = 0; i <= 15; i++) { tmp = n & maskh; maskh = maskh >> 1; for(j = i + 1; j <= 31 - i; j++) { tmp = tmp >> 1; } rst = tmp | rst; } printf("%x\n",rst);return 0;}翻转一个32位二进制数unsigned int n; scanf("%u",&n); n = ((n >> 1) & 0x55555555) | ((n << 1) & 0xaaaaaaaa); n = ((n >> 2) & 0x33333333) | ((n << 2) & 0xcccccccc); n = ((n >> 4) & 0x0f0f0f0f) | ((n << 4) & 0xf0f0f0f0); n = ((n >> 8) & 0x00ff00ff) | ((n << 8) & 0xff00ff00); n = ((n >> 16) & 0x0000ffff) | ((n << 16) & 0xffff0000); printf("%u",n);