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


Bashで16進数,10進数,8進数,2進数で四則演算

シェルである bash を使って、16進数(HEX),10進数,8進数(OCT),2進数(BIN)の四則演算をする方法を紹介します。
また printf コマンドを利用して 16進数(HEX)などに変換し出力する実行例も紹介します。


Bashで四則演算

Bashで足し算・引き算・割り算・掛け算をしたい場合は、以下の構文になります。

  • 足し算
    echo $((値+値)
  • 引き算
    echo $((値-値)
  • 掛け算
    echo $((値*値)
  • 割り算
    echo $((値/値)

実行例

四則演算の実行例です。

$ echo $((20+10))
30
$ echo $((20-10))
10
$ echo $((20*10))
200
$ echo $((20/10))
2

16進数(HEX),8進数(OCT),2進数(BIN)の四則演算

16進数(HEX),8進数(OCT),2進数(BIN)を指定する場合、以下のように値を記述します。

16進数0x値 or 0X値 16#値
8進数8#値
2進数2#値

16進数の計算をしてみる

実際に16進数で計算してみます。

$ echo $((0x10+0x20))
48
echo $((16#10+16#20))
48	

計算結果を16進数,8進数で表示する

計算結果が10進数で表示されてしまいます。
この出力を16進数に変換するため、printfを使うと便利です。
実際の実行例は以下のようになります。

echo $((16#10+16#20)) | xargs printf '%x\n'
30
$ echo $((16#10+16#20)) | xargs printf '%o\n'
60

xargsで計算結果をprintfに渡しています。
'%x'で16進数、'%o'で8進数に変換します。
¥nは改行となっています。

2進数、8進数の計算をしてみる

以下は、2進数と8進数の計算を実際に実行した時の出力になります。

$ echo $((2#1+2#10))
3
$ echo $((8#1+8#7)) | xargs printf '%o\n'

進数変換

進数変換は、上記で使った printf を使えば簡単にできるでしょう。

printf '%x\n' 255
ff
$ printf '%o\n' 511
777

以上、bashで簡単に四則演算をする方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-01-15 (水) 00:07:56