コマンド
bc
数値計算を行う。計算機。小数・多倍長整数等に対応
最終更新 2019-01-29
UNIX/Linux の bc コマンドは数値計算を行うコマンドである。多倍長整数を扱う機能があるので、非常に大きな数でも扱うことができる。また、基数を指定できるため、2進数・8進数・10進数・16進数の相互変換も可能である。
● bc コマンドの基本的な使い方
bc コマンドを実行すると入力待ちになるので、そこに数式を入力していくと、計算結果が出力される。
% bc
2+4 (入力)
6
a=34/2 (入力)
a-2 (入力)
15
quit (終了)
⇒ quit の代わりに EOF (Ctrl-d) で終了することもできる。
さらに標準入力から計算式を指定することもできる。
% 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
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