#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)