Entry

0xFF までの数を10進数に変換するときの覚え方とか

2011年04月26日

この前,暇つぶしにプログラマへの質問に答えたんですけれど,そこでこんな質問があったのでした。

4.あなたは2桁16進数を頭の中で10進数変換できますか?

「知らないうちにできるようになった」と書いたんですけれど,これを知った知人が「マジか?どうやって?」と言っていたので少し書いておきます。実際あまり使う場面はないんですが。

あたしの場合,基本的に覚えているんですけれど,0xFF種類すべてを覚えているわけではなくて,1桁目と2桁目を足していたりします。1桁目は簡単に覚えられると思うけれども,問題は2桁目。16ずつ増えていくので覚えづらい。そこで覚え方。まず,16進数の2桁目だけを増やして並べるとこんな感じになります。

HEX  DEC 
00 :   0  0
10 :  16  6
20 :  32  2
30 :  48  8
40 :  64  4
50 :  80  0
60 :  96  6
70 : 112  2
80 : 128  8
90 : 144  4
A0 : 160  0
B0 : 176  6
C0 : 192  2
D0 : 208  8
E0 : 224  4
F0 : 240  0

1列目が16進の値で,2列目が10進の値。そして,あたしが覚えているキーが3列目です。これは2列目の10進1桁目の値だけを抜き出したものです。16進数は16の倍数になってるわけですけれど,1桁目だけを取ると 0→6→2→8→4→0→… と値が循環しているのが分かると思います。

で,もうひとつ。10進1桁目値が0になるときは,80の倍数になってますよね。だから,0x00, 0x50, 0xA0, 0xF0 は何も考えなくても簡単に覚えられます。

0x50の倍数以外は,上の 0→6→2→8→4→0→… の循環をキーにして間を埋めつつ覚えます。

ま,最近は,ある数字を見たらそれに関係する値がぱらぱらと思い浮かぶので,上のようにはじめから数えたりはしてないんですけどね。例えば 3 という数字を見たら,3 だけでなく, 8 や 48 あたりの数が思い浮かびます。ちなみに,8というのは,23。16 bit のパソコンを使っていた方は,20x0F くらいまでは(無駄に)覚えているはず。

ま,結局「覚えろ」ということになってしまう……と。もっとうまい覚え方があったら,そっちでやってみるといいと思います。基本的にコンピュータは2進,8進,16進の世界なので,10進に直してホゲホゲすることはあまりないと思うんですが。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN