2009年05月30日 n進法表記
_ linuxでの16進数の計算
WindowsとLinuxのソフトを比較すると、多くの点でLinuxの方が使いやすい。しかし、標準で入っているソフトの中で、唯一Windowsの方が勝っていると感じるのが計算機である。binaryをいじっていると、16進数の計算をしたくなるが、Windowsのcalcでは計算できるが、Linuxのxcalcだとできない。kcalcだとできるようだが。
そこで、rubyを使って計算することになる。これまでは、
ruby -e 'p "%x"%(0xa+0xb)'
とやっていたが、実はもっと便利なmethodがあることを知った。to_s(n)で、n進数の表記に変換できるのだ。すると、
ruby -e 'p (0xa+0xb).to_s(16)'
とすれば良いことになる。でもこちらの方がbyte数が多いな。ちなみに、1-zまでで表せる36進数まで対応しているようだ。99じゃなくてffの表を作るプログラムはこんな感じ。
n=16 for i in 1...n for j in 1...n print "%2s "%(i*j).to_s(n) end puts end
これで、nを変えるだけでzzの表まで作ることができる。