zoukankan      html  css  js  c++  java
  • C实现二进制高低逆序

    方法一:效率低

    int func(unsigned int uiData , int length)
    {
        unsigned int uiValue = 0 ;
        int            i        = 0 ;
        for  ( i = 0 ; i < length ; i++ )  
    {
           uiValue  = (uiValue << 1) + (uiData & 0x01) ;
           uiData   = uiData >> 1 ;
        }
        return uiValue ;
    }

    方法二:分治

    int func (unsigned int uiData)
    {
        unsigned int uiValue = 0 ;
        /* 分而治之的思想 */
        /* 高16位和低16互换 */
        uiValue = ((uiData >> 16)&0x0000ffff) |
    ((uiData << 16)&0xffff0000);
    /*高低16位中的高低8位互换*/
        uiValue = ((uiValue >> 8)&0x00ff00ff) |
    ((uiValue << 8)&0xff00ff00);
    /*8位中的高低4位互换*/
        uiValue = ((uiValue >> 4)&0x0f0f0f0f) |
    ((uiValue << 4)&0xf0f0f0f0);
    /*4位中的高低2位互换*/
        uiValue = ((uiValue >> 2)&0x33333333) |
    ((uiValue << 2)&0xcccccccc);
    /*2位中的高低位互换*/
        uiValue = ((uiValue >> 1)&0x55555555) |
    ((uiValue << 1)&0xaaaaaaaa);
        return uiValue ;
    }
  • 相关阅读:
    彻底解决IE6下Asp.net Ajax客户端框架未能加载
    mootools【二】 Array篇
    SQL Server存储过程编写和优化措施
    Calendar ——漂亮的MooTools 日历插件
    免费使用和 Ajax & Javascript 操纵和显示图片的代码
    26步获得网站流量
    SEO中的十个“没必要”
    如何选择关键字
    建设一个成功的网站
    jQuery 编辑器(转载)
  • 原文地址:https://www.cnblogs.com/ikaka/p/3355045.html
Copyright © 2011-2022 走看看