首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

将一个无符号整形32位数按位逆序解决方案

2012-05-04 
将一个无符号整形32位数按位逆序我的方案如下,大家有啥好的方法,讨论讨论啊C/C++ code#includestdio.hin

将一个无符号整形32位数按位逆序
我的方案如下,大家有啥好的方法,讨论讨论啊

C/C++ code
#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;}


[解决办法]
C/C++ code
翻转一个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); 

热点排行