• 算法题:一个N字节的数,如何逆序排列各个位(bit)?例如1字节的数 0010 0011 => 1100 0100


    一个简简单单的题,如果用Java,C++,C估计还挺麻烦的,大体思路就是,开辟个N字节空间,用移位掩码方法逆向给每个bit赋值,这里由于N可能比较大,还得记录些额外的边界信息。

    用Erlang则会简单很多:

    -module(bitoperator).
    -export([bit_reverse/1]).
    
    bit_reverse(Bin) ->
                L = [X || <<X:1>> <= Bin],
                Lr = lists:reverse(L),
                Br = list_to_binary(Lr),
                << <<X:1>> || <<X:8>> <= Br >>.

    思路是,先把bit变成0,1的大小为1个byte的数(如同Java里头的byte变量),然后逆序排列,然后顺序取最低位重新组成结果。

  • 相关阅读:
    003 Rabbitmq的简单队列
    002 Rabbitmq的安装
    001 消息中间件--Rabbitmq
    013 mybatis整合
    013 Durid监控
    012 druid数据源
    011 嵌入式容器
    集成支付宝IOS
    2015起航,
    python 创建用户
  • 原文地址:https://www.cnblogs.com/github-Yuandong-Chen/p/7442260.html
Copyright © 2020-2023  润新知