#author("2020-01-15T00:07:56+09:00","","")
#navi(../)
* Bashで16進数,10進数,8進数,2進数で四則演算 [#de3dfd99]
シェルである bash を使って、16進数(HEX),10進数,8進数(OCT),2進数(BIN)の四則演算をする方法を紹介します。~
また printf コマンドを利用して 16進数(HEX)などに変換し出力する実行例も紹介します。

#htmlinsert(linux_ads_top.html)
#contents

* Bashで四則演算 [#u27ed5ea]
Bashで足し算・引き算・割り算・掛け算をしたい場合は、以下の構文になります。
-足し算
 echo $((値+値)
-引き算
 echo $((値-値)
-掛け算
 echo $((値*値)
-割り算
 echo $((値/値)
** 実行例 [#d4f13a32]
四則演算の実行例です。
 $ echo $((20+10))
 30

 $ echo $((20-10))
 10

 $ echo $((20*10))
 200

 $ echo $((20/10))
 2

* 16進数(HEX),8進数(OCT),2進数(BIN)の四則演算 [#j4f815a0]
16進数(HEX),8進数(OCT),2進数(BIN)を指定する場合、以下のように値を記述します。
|16進数|0x値 or 0X値 16#値|
|8進数|8#値|
|2進数|2#値|
** 16進数の計算をしてみる [#u1616c73]
実際に16進数で計算してみます。
 $ echo $((0x10+0x20))
 48

 echo $((16#10+16#20))
 48	

** 計算結果を16進数,8進数で表示する [#pce0db51]
計算結果が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進数の計算をしてみる [#v3155f38]
以下は、2進数と8進数の計算を実際に実行した時の出力になります。
 $ echo $((2#1+2#10))
 3
 $ echo $((8#1+8#7)) | xargs printf '%o\n'

* 進数変換 [#t25c1d6d]
進数変換は、上記で使った printf を使えば簡単にできるでしょう。
 printf '%x\n' 255
 ff

 $ printf '%o\n' 511
 777

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

#htmlinsert(linux_ads_btm.html)

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