Rubyで2進数表記に変換(負の数は2の補数で表示)

  • このエントリーをはてなブックマークに追加

Rubyで整数を与えて、その数を2進数で表記したい場合。
sprintf or formatで数値を文字列に直して表示させればよい。
以下の様な形。

>> format("%.10b", 1)
=> "0000000001"
>> format("%.10b", -1)
=> "1111111111"

%の右隣の".10"は精度を示すもので、ここでは"b"(ビット列表記)が指定されているのでビット幅を意味する。
この場合は10bit幅と相成る。
ここで、"."を抜いて表記すると以下の様になる。

>> format("%10b", -1)
=> "       ..1"

Rubyの整数は上限が無いので、-1を2の補数表記すると"1111.......1111"と、ずーっと続くことになるので、ビット幅を指定しないと上記の様に表示されてしまうということになる。
以前もここで書いたことがあるけど、Rubyはハードウェア検証の際の期待値を作るのに適してる気がする。
前職で別の会社で常駐していたときに利用されている方がいたなぁ。と思い出した。

(Visited 3 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*