[代码模板]将一个32位的二进制串反转

原创 2007年09月27日 14:28:00

原串:10010001111011010101011001110101

输出:10101110011010101011011110001001

也就是,最后一位变成了第一位,第一位变成了最后一位。

如果固定为32位,用如下函数解决(gxqcn提供)

reverse(uint x) 

        
uint y = 0x55555555
        x 
= (((x  > > 1& y)  ¦ ((x & y)  < < 1)); 
        y 
= 0x33333333
        x 
= (((x  > > 2& y)  ¦ ((x & y)  < < 2)); 
        y 
= 0x0f0f0f0f
        x 
= (((x  > > 4& y)  ¦ ((x & y)  < < 4)); 
        y 
= 0x00ff00ff
        x 
= (((x  > > 8& y)  ¦ ((x & y)  < < 8)); 
        
return((x  > > 16)  ¦ (x  < < 16)); 
}

这里,一共进行了5次置换。

原串:12345678...32

第一次:2 1 4 3 6 5 8 7 ... 32 31

第二次:4 3 2 1 8 7 6 5 ... 32 31 30 29

第三次:8 7 6 5 4 3 2 1 ... 32 31 30 29 28 27 26 25

到了第五次,置换完成。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

求一个32位二进制数中的1的个数

别人的代码,只不过加上了我自己的理解,都在注释里面了: // 返回一个32位二进制数中的1的个数 // 第一种方法,每四个二进制位计算一次,共需累加八次 int bitCount_1(int n...

快速求一个32位无符号整数二进制中为1的个数

一个数5,二进制表示法,为101,则有2个1,如何快速求出一个32位无符号整数中1的个数,如果要我们来做,我们可能会进行一个32次的循环,从1至32,依次测试相应的位;这个算法不是最优的。以下算法效率...

反转一个字节 和 判断32位整数二进制中1的个数 的算法

好像有一个是微软的面试题 unsigned char reverse8( unsigned char c ) {      c = ( c & 0x55 ) > 1;      c = ( c...

反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)

呵呵,好东东,共享,好像有一个是微软的面试题 unsigned char reverse8( unsigned char c ) {      c = ( c & 0x55 ) > 1;   ...

反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)

呵呵,好东东,共享,好像有一个是微软的面试题 unsigned char reverse8( unsigned char c ) {      c = ( c & 0x55 ) > 1;   ...

java字符反转代码

偶数二进制位反转(JAVA)

java中相关的位操作 运算 功能 说明 & 按位与 a&b a b对应位与 按位或 ~ 位非 ~a a按位取反 > 位右移 a>>b...

CUDA图像反转代码

c++反转字符串代码

  • 2014-04-09 16:32
  • 714B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)