UNIX/Linuxの部屋 bcコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド bc 数値計算を行う。計算機。小数・多倍長整数等に対応 このエントリーをはてなブックマークに追加

最終更新


UNIX/Linux の bc コマンドは数値計算を行うコマンドである。多倍長整数を扱う機能があるので、非常に大きな数でも扱うことができる。また、基数を指定できるため、2進数・8進数・10進数・16進数の相互変換も可能である。


bc コマンドの基本的な使い方
bc コマンドを実行すると入力待ちになるので、そこに数式を入力していくと、計算結果が出力される。
% bc
2+4 (入力)
6
a=34/2 (入力)
a-2 (入力)
15
quit (終了)
⇒ quit の代わりに EOF (Ctrl-d) で終了することもできる。

ファイルに数式を書く・標準入力から数式を渡す
ファイルに計算式を記述して、ファイル名を指定してもよい。
% cat sample
5*8
quit
% bc sample
40

さらに標準入力から計算式を指定することもできる。
% echo '9*9' | bc
81
% echo 'scale=4; 9/5; 15' | bc
2.2500
15
⇒ セミコロンでつなぐと複数の計算をさせることができる

bc コマンドで使用可能な演算子
使用可能な演算子は以下のとおり。
a + b
a - b
a * b
a / b 商。小数点以下の表示は scale の設定に従う
a % b 剰余。a を b で割ったときの余り
a ^ b べき乗。a を b 回掛け合わせた数。

小数点の有効桁数指定
小数点以下の有効桁数は scale という変数で設定できる (デフォルトは0)。
% bc
2/3 (入力)
0
⇒ デフォルトでは scale=0 なので小数点以下は表示されない
scale=4 (入力)
⇒ 小数点以下4桁を表示するよう設定変更
2/3 (入力)
.6666

入出力の基数を設定 (2進数・8進数・10進数・16進数)
bc コマンドは、入力の基数を ibase、出力の基数を obase で指定可能である。デフォルトでは ibase=10、obase=10 となっているので、入力出力とも 10進数である。

10進数を 16進数に変換:
% echo "obase=16; 255" | bc
FF
10進数を 2進数に変換:
% echo "obase=2; 253" | bc
11111101
16進数を 10進数に変換:
% echo "ibase=16; FF" | bc
255
2進数を 16進数に変換:
% echo "obase=16; ibase=2; 1101011010001011" | bc
D68B

なお、ibase と obase を同時に設定する場合は注意が必要である。例えば ibase=2 を先に設定してしまうと、obase=XXX の部分にも影響を与えてしまう。よって obase を先に、ibase を後に書くことをおすすめする。

制限値を表示する (GNU bc のみ)
主に Linux で使用される GNU bc においては、limits でさまざまな制限値を指定可能である。
% bc
limits (入力)
BC_BASE_MAX = 2147483647
BC_DIM_MAX = 16777215
BC_SCALE_MAX = 2147483647
BC_STRING_MAX = 2147483647
MAX Exponent = 9223372036854775807
Number of vars = 32767
>> Linuxオンラインマニュアル(man) Linux bc(1)
>> Solaris10オンラインマニュアル(man) Solaris10 bc(1)
>> FreeBSDオンラインマニュアル(man) FreeBSD bc(1)