一個簡簡單單的題,若是用Java,C++,C估計還挺麻煩的,大致思路就是,開闢個N字節空間,用移位掩碼方法逆向給每一個bit賦值,這裏因爲N可能比較大,還得記錄些額外的邊界信息。spa
用Erlang則會簡單不少:code
-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變量),而後逆序排列,而後順序取最低位從新組成結果。blog