四方山話 2進数
「
さて入門編が終了し、中級編に入るわけだが・・・
その前に、これから必要となる2進数とついでに16進数に関してやっておこうと思う。閑話休題ってやつか」
「作者、使い方違う」
「そうか、まあいいや」
「・・・・・・」
「えー、○進数というのは簡単にいうといくつ字を使うかだな。10進数なら10、2進数なら2、16進数なら16種使って表す」
「ダイナミックな説明だな」
「もしくは大雑把とかいい加減とか言うんですよ」
「適当だーなー」
「適当とは適切に当たること!!」
「しかしですね」
「じゃあ、2を基数とする位取り記数法で、適当な自然数
N (> 1) を指定して N 種類の記号や数字を用意し、それを用い数を表すための規則で・・・」
「悪かった、そっちの方が分かりにくい」
「心配するな、言ってる俺もよくわからんかった!!」




「威張るなよ・・・」
「えー、話を戻して・・・普段使ってるのが10進数だな。10で位が上がるやつだ」
「えーと10進数だと1〜10の10種類・・・か?」
「ノン!ノン!
二つのノンで不正解。10は2種類の数字の組み合わせだな。正解は0〜9の10種類だ」
「ああ、そうか」
「そして2進数は0と1の2種類だ。コンピュータで使われる物だから聞いたことくらいはある人も多いだろうな」
「16進数だとどうなるんだ?0〜9以外に何かあるのか?」
「アルファベットを使う。0〜9とA〜Fの16種だな」
「慣れてないと勘違いしやすいですが、基本的にコンピュータは数字を0から数え始めるんです」
「人間は普通は1だからな」
「するとどうなるんだ?」
「ずれが生じるな。例えば5個の数字が並んでいるとする。
10 20 30 40 50
としよう。
で最初のデータを参照したい時、最初なので1番目として1とすると、コンピュータは20と返す」
「えーと・・・こっちは1から始めてるけど向こうは0から始めてるからだな」
「うい、コンピュータの番号振りはこうだな。
10(0番目) 20(1番目) 30(2番目) 40(3番目) 50(4番目)
だな」
「ふむふむ」
「なので5番目となると、存在しないからエラーになるな。プログラム初心者でよくやるミスの一つだ」
「5個のデータがある場合は0から始まるので0〜4の5個だ。1〜5と考えてしまいやすいが注意しないとな」
「作者、話ずれてないか?」
「えー、閑話休題」
「ではまず10進数。これは一桁に収められる数字は0〜9の10個で、10倍毎に桁が上がる計算法。普段使っているやつだな」
「そして2進数。これは0と1の二つの数字を使って表す方法。コンピュータで使われるやつだ。例えば2進数で10とすると、10進数の2に当たる」
「16進数は、0〜9、A〜Fの16個で表す。9の次はAで、10進数なら10に当たる。16進数の10なら10進数の16に当たる」
「ややこしいな。何のためにあるんだ?」
「そうだな、まず2進数は0と1の2種類だけ。つまりOFFを0、ONを1に置き換えることで電気回路の制御をするわけだ。
コンピュータは0と1の世界と言われるが、0と1は回路に電気を流すか流さないかを命令するためのものと言えるな」
「それで何をするか処理するわけか・・・考えると頭痛くなるな」
「人間が考える必要はない!コンピュータがやってくれるからな」
「考えるな感じるんだ!!」
「で16進数だが・・・コンピュータの設定いじるときに、2進数表記の数字出されても桁が多くて分かりにくいだろ。だから16進数を使って一、二桁で表して分かりやすくしようというものだ」
「じゃあ16進数ってのは2進数を簡潔に表すための物てことだな」
「そうだな」
「さて、ここまでごたごたやってきたが取り敢えず計算法とか覚えときゃそれで済む!!変換式を教えるのでこれだけ覚えとけばだいたいOKだ!!」
「作者って相変わらず身も蓋もないよなー」
「これ以外にも使い道は色々あるのだがな」
「今回は必要ない、流せ!!」
「その前に16までの対応表を」
|
10進数・2進数・16進数対応表 |
| 10進数 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
| 2進数 |
0 |
1 |
10 |
11 |
100 |
101 |
110 |
111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
10000 |
| 16進数 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
10 |
「変換式にはべき算が出るが大丈夫かな?」
「すまん、べき算ってなんだ?」
「クーさん、中学辺りで習うことだと思うが」
「クーさん、言うな!んなこと言われてもなあ、俺の時代にそういうのなかったし」
「まあまあ、クーさんはこれでも紀元前後辺りの人なんだから」
「二千年ほど前か!?」
「一万年と二千年前から〜」
「一万年多い!!」
「んでは簡単に説明しよう。べき算、冪乗、累乗ともいうが、これは掛け算にとっての・・・足し算に対する掛け算」
「・・・わからん」
「・・・俺もわからん」
「肯定だ」
「・・・・・・何が言いたいかは何となく分かるが、その説明はどうかと思うぞ」
「分かった分かった、まったく理解力に乏しい奴らだ」
「作者の説明不足だと思う」
「肯定だ」
「だまらっしゃい!えーでは、
例えば2+2+2+2を2×4と表すだろう」
「2が四つあるということですね」
「ああ、いちいち同じ数式を繰り返すのも面倒だし2×4で表すだろう」
「ピンと来たぜ。つまり2×2×2×2を2何々の4と表すのがべき算だな」
「Exactly!!(そのとおりでございます)」
「作者、キサマ読み込んでいるなッ!」
「答える必要はない」
「先に進めろ・・・」
「えーべき算は2^4もしくは24とこんな感じで表す」
「注意する約束は0乗は1になることだな」
「ん、0じゃないのか?」
「ああ、この場合は1になる。そう覚えとけ、細かいこと知りたければ自分で調べれ」
「やれやれ」
「あと1乗はそのままだな。2の1乗なら2、3の1乗なら3だ」
「よし理解した」
「さすが地味ながらルーン魔術の使い手、呑み込みが早いぜ」
「ああ、地味だが凄いぜ」
「地味地味言うな!!」
「ではまず2進数から10進数への変換方法だ。
まず大抵のデータは8ビットだから、8桁になり
「すまんビットてなんだ?」
「ファンネルみたいなもので」
「黙ってろ、馬鹿」
「ビットというのは、コンピュータが扱う一番小さい値。
2進数字binary digitの略で、2進数の一桁。つまり、0か1の一文字のことだな」
「そしてこれを八個、一纏めにして1バイトbyteという単位になる」
「正確には8ビット一纏めの場合はオクテットと呼ぶんだが。
バイトってのはようはビットを一纏めにしたもので、初期のコンピューターは1バイト6ビット、他にもDECのPDP-10、NECのACOS-6辺りが7ビットや9ビットとして扱うやつもあるそうだしな。
だから情報通信の分野では8ビット=1オクテットと呼ぶのが適切とされる。
んだが、今は1バイトは8ビットで使うのが大多数だし、TCP/IPでも1バイト=8ビットだから、今回はそれほど重要ではないな」
「昔のRPGでステータスの最大値が255ってのが多かったのも、要領が少ないんで1バイトで表してたからだな」
「八桁の2進数の最大値は11111111、10進数なら255だからな」
「そうそう後、1KBは1024バイトなんだが市販されてるHDDなんかは1000バイトで計算してるから実際の容量は表記より少なくなるよなー解ってても損した気になるぜー」
「正確に1KB=1024バイトとして表すのは1キビバイト (KiB)と表す・・・あんまり使わないけどな」
「脱線しまくりだな・・・」
「すまんすまん・・・では、
八桁の2進数があるとする・・・
10001011
適当に0と1を8個並べてみた。
こいつを変換してみよう」
「まず一番下の桁から2の0乗からスタートした数字を当てはめる」
「2の0乗、1乗、2乗と繰り返していくわけですね」
「それぞれ結果を当てはめると、1、2、4、8、16、32、64、128となる。
| 1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
| 27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
| 128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
で1になっているところの数字を足してやる」
「この場合は1、2、8、128ですので・・・139ですね」
「だな。ではこの139を2進数に変換してみよう。
139を2で割っていくんだ。
139÷2=69余り1
69÷2=34余り1
34÷2=17余り0
17÷2= 8余り1
8÷2=4余り0
4÷2=2余り0
2÷2=1余り0
1÷2=0余り1
でこれで出た余りを最後の所から並べる」
「10001011・・・本当だ、ちゃんと変換されてるな」
「では次は16進数から10進数・・・最大値のFFで行ってみるか」
「これもまず16の0乗から当てはめる」
「2桁だから0乗、1乗で1と16だな」
「でこれを掛けてやる。Fは10進数の15だから、15×1、15×16だな」
「15と240となります」
「で、出た答えを全部足す・・・255だな」
「おお〜」
「10から16・・・2進数と同じで今度は16で割っていく。
255÷16=15余り15
15÷16=0余り15
15はFで、これも最後から並べてFFと」
「ほうほう、面白いねえ」
「取り敢えずこれだけ覚えとけば当面は大丈夫だ。まあ他にも8進数とかあるが、そう必要ではないからな・・・なったときにまたやろう」
「話が逸れてばかりだったな・・・」
「気にするな・・・では次回!!」
「・・・ここで五十嵐くんからの耳寄り情報だ・・・Windows付属の電卓ソフトに2進、8進、16進変換機能付いてるぜーー!!」
登場人物
作者
このサイトの管理人。
人生を満喫している。
五十嵐
オリジナルサウンドノベル「ナイトロード」の脇役。
声帯模写の特技を持つ。
アルス
このサイトにて公開している荒唐無稽オリジナル巨大ロボット小説「フレスベルク」の主人公。
とことん影が薄い。
上記三名のアイコンは樹氷さんより頂きました。
龍星
オリジナルサウンドノベル「ナイトロード」の主人公。
冷静な外面の中に灼熱の魂を持つ男である。
アイコンは当サイトオリジナルです。
ランサー
TYPE-MOONのPCゲーム「Fate/staynight」の登場人物。
正体はケルト神話で語られる英雄クー・フーリン。
因果を逆転させる槍、ゲイボルクが必殺武器。
相楽宗介
賀東招二著のライトノベル「フルメタル・パニック!」の主人公。
最近、新機体レーバテインをゲットした。
上記に二名のアイコンはmaaと愉快な仲間達様から頂きました。