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


bcコマンドで16進数、10進数、8進数、2進数の変換・計算を行う方法

bcコマンドを利用すると16進数、10進数、8進数、2進数の変換や、計算をコマンドラインで簡単にすることができます。
わざわざ電卓アプリを起動する必要もありません。
以下に使用例を記します。


スポンサーリンク

bcコマンドについて

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ラインでbcコマンドを実行する方法

上記のような対話形式ではなく、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

2進数を8進数、10進数、16進数に変換する

  • 2進数→8進数
    $ echo "obase=8; ibase=2; 111111111" | bc
    777
  • 2進数→10進数
    $ echo "obase=10; ibase=2; 11111111" | bc
    255
  • 2進数→16進数
    $ echo "obase=16; ibase=2; 11111111" | bc
    FF

8進数を2進数、10進数、16進数に変換する

  • 8進数→2進数
    $ echo "obase=2; ibase=8; 666" | bc
    110110110
  • 8進数→10進数
    $ echo "obase=10; ibase=8; 1000" | bc
    512
  • 8進数→16進数
    $ echo "obase=16; ibase=8; 1000" | bc
    200

10進数を2進数、8進数、16進数に変換する

  • 10進数→2進数
    $ echo "obase=2; ibase=10; 255" | bc
    11111111
  • 10進数→8進数
    $ echo "obase=8; ibase=10; 511" | bc
    777
  • 10進数→16進数
    $ echo "obase=16; ibase=10; 255" | bc
    FF

16進数を2進数、8進数、10進数に変換する

  • 16進数→2進数
    $ echo "obase=2; ibase=16; FFFF" | bc
    1111111111111111
  • 16進数→8進数
    $ echo "obase=8; ibase=16; FF" | bc
    377
  • 16進数→10進数
    $ echo "obase=10; ibase=16; FFFF" | bc
    65535

スポンサーリンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:28:20 (1069d)