bcコマンドを利用すると16進数、10進数、8進数、2進数の変換や、計算をコマンドラインで簡単にすることができます。
わざわざ電卓アプリを起動する必要もありません。
以下に使用例を記します。
obaseとibaseに値を設定することにより、6進数、10進数、8進数、2進数を利用した計算が簡単にできます。
obaseとibaseについては以下の通り
キーワード | 説明 | 初期値 |
obase | 出力したい進数を設定 | 10 |
ibase | 入力となる進数を設定 | 10 |
注意
obase, ibaseの設定は、obase, ibaseの順に指定してください。
先にibaseを指定するとobaseもibaseで指定された進数で表現されたもののして解釈されてしまうからです。
以下、bcコマンドを対話形式で起動し、2進数の11111111を16進数のFFに変換表示させた実行結果です。
$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. obase=16 ibase=2 11111111 FF quit
以下のように計算もできます。(16進のA〜Fは大文字で入力しないといけませんでした。)
$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. obase=10 ibase=16 FF+FF00 65535 quit
上記のような対話形式ではなく、1ラインで計算結果(変換結果)を表示したい場合は以下のようにします。
$ echo "obase=10; ibase=2; 1111111111111111" | bc 65535 $ echo "obase=16; ibase=2; 1111111111111111" | bc FFFF $ echo "obase=8; ibase=2; 1111111111111111" | bc 177777
計算もできます。
$ echo "obase=10; ibase=2; 1111+11110000" | bc 255
$ echo "obase=8; ibase=2; 111111111" | bc 777
$ echo "obase=10; ibase=2; 11111111" | bc 255
$ echo "obase=16; ibase=2; 11111111" | bc FF
$ echo "obase=2; ibase=8; 666" | bc 110110110
$ echo "obase=10; ibase=8; 1000" | bc 512
$ echo "obase=16; ibase=8; 1000" | bc 200
$ echo "obase=2; ibase=10; 255" | bc 11111111
$ echo "obase=8; ibase=10; 511" | bc 777
$ echo "obase=16; ibase=10; 255" | bc FF
$ echo "obase=2; ibase=16; FFFF" | bc 1111111111111111
$ echo "obase=8; ibase=16; FF" | bc 377
$ echo "obase=10; ibase=16; FFFF" | bc 65535