cms.ft.bit_reverse のソースコード

"""
バイナリ数値のビット列を反転する機能を提供するモジュール。

このモジュールは、与えられた整数のバイナリ表現においてビットの並びを反転する `bit_reverse` 関数を定義します。
コマンドライン引数でバイナリ数値を指定することも可能です。

:doc:`bit_reverse_usage`
"""
import sys

val10 = 0b110001

[ドキュメント] def bit_reverse(val): """ 与えられた整数のビット列を反転します。 例えば、入力が `0b110001` の場合、出力は `0b100011` となります。 最下位ビットから順に新しい数値の最上位ビットに移動させることでビット列を反転させます。 数値のビット長は入力値に応じて動的に決定されます。 :param val: int: 反転する整数値。 :returns: int: ビットが反転された整数値。 """ ret = 0 while 1: v0 = val & 0b001 # save the final bit to v0 ret = ret | v0 # put v0 to the final bit of ret (will be the top digit of ret) val = val >> 1 # bit shift for next iteration if val == 0: break else: ret = ret << 1 # bit shift ret to left return ret
if __name__ == "__main__": if len(sys.argv) > 1: val10 = int(sys.argv[1], 2) print("") print("Base 10 input: ", val10) print("Base 2: {:b}".format(val10)) vrev = bit_reverse(val10) print("reversed in Base 10 =", vrev) print(" in Base 2 = {:b}".format(vrev)) print("")