#navi(../)
* bcコマンドで16進数、10進数、8進数、2進数の変換・計算を行う方法 [#n0e7aee0]
bcコマンドを利用すると16進数、10進数、8進数、2進数の変換や、計算をコマンドラインで簡単にすることができます。~
わざわざ電卓アプリを起動する必要もありません。~
以下に使用例を記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* bcコマンドについて [#ud22a3f1]
obaseとibaseに値を設定することにより、6進数、10進数、8進数、2進数を利用した計算が簡単にできます。~
obaseとibaseについては以下の通り
|キーワード|説明|初期値|
|obase|出力したい進数を設定|10|
|ibase|入力となる進数を設定|10|

&color(red){''注意''};~
''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コマンドを実行する方法 [#j819593f]
上記のような対話形式ではなく、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進数に変換する [#oa5db541]
- 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進数に変換する [#y5603247]
- 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進数に変換する [#qfa4c881]
- 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進数に変換する [#o32ba51c]
- 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


#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS