シリーズ「コンピュータの文字のしくみ」 第2回
回路が「数字を光らせる」とは?
時計と、発車の時刻
前回の話を、短く振り返っておく。
コンピュータの中にあるのは、0 と 1 の並び、パターンだけだ。
0100 0001 を「A」と読むのは、人が決めた表(文字コード)のほうである。
同じパターンを、数として読むこともできる。
名札を貼るのは、読む側だ。
前回は、こう締めくくった。 回路は表を見ていないし、「A」がどんな形をしているのかも知らない。 それなのに、駅の掲示板は、ちゃんと文字の形を光らせている。
パターンを、どうやって光る形にするのか。
いちばん簡単な形から始めよう。 掲示板の、発車の時刻の数字だ。
数字だけなら、身の回りに、もっと簡単な光らせ方がある。 デジタル時計や電卓の数字を、近くで見てほしい。 どの数字も、7 本の棒でできている。
「8」は 7 本ぜんぶ。「1」は右の 2 本だけ。 発車の時刻の「10:25」も、この 7 本があれば書ける。
この回は、4 桁のパターンを、7 本の棒の形にする回路を作る。
7 本の棒
まず、7 本の棒に名前を付けておく。
いちばん上が a。そこから時計回りに、b、c、d、e、f。真ん中が g。 このような表示を、棒(セグメント)が 7 本なので、7 セグメントと呼ぶ。 部品として売っている 7 セグメントの表示も、たいてい、この名前で棒を呼んでいる。
次に、数字をパターンで表す。 0〜9 は 10 通りなので、4 桁あれば足りる(4 桁で 16 通り)。
4 桁のパターンを数として読むときは、右の桁から順に、1 の位、2 の位、4 の位、8 の位と読む。
前回の 8 桁と同じ読み方を、4 桁に縮めただけだ。
1 の立っている位の重みを足せば、数になる。
たとえば 0111 は、4 + 2 + 1 で 7。
数字ごとに、パターンと、光らせる棒を表にしてみよう。 ● が、光らせる棒だ。
| 数字 | パターン | a | b | c | d | e | f | g |
|---|---|---|---|---|---|---|---|---|
| 0 | 0000 | ● | ● | ● | ● | ● | ● | |
| 1 | 0001 | ● | ● | |||||
| 2 | 0010 | ● | ● | ● | ● | ● | ||
| 3 | 0011 | ● | ● | ● | ● | ● | ||
| 4 | 0100 | ● | ● | ● | ● | |||
| 5 | 0101 | ● | ● | ● | ● | ● | ||
| 6 | 0110 | ● | ● | ● | ● | ● | ● | |
| 7 | 0111 | ● | ● | ● | ||||
| 8 | 1000 | ● | ● | ● | ● | ● | ● | ● |
| 9 | 1001 | ● | ● | ● | ● | ● | ● |
光らせると、こうなる。
6・7・9 の形は、作りによって少し違う。 「6」の上の棒(a)や、「9」の下の棒(d)を光らせない作りもあるし、「7」に左上の棒(f)を足す作りもある。 決まった規格があるわけではない。 この回は、上の表の形にする。
ついでに、前回の表を思い出してほしい。
文字の「0」〜「9」は、0011 0000 から 0011 1001 だった。
下 4 桁が、ちょうどこの表のパターンになっている。
表を、回路に
この表を、回路にしたい。
入口は 4 桁のパターン。出口は、7 本の棒それぞれの「光る(1)」「消える(0)」だ。
一度に考えると難しいので、2 段に分ける。
パターンを、10 本の線に
まず、4 桁のパターンを、10 本の線にほどく。
「0 の線」「1 の線」……「9 の線」。
パターンが 0011 のときは「3 の線」だけが 1 になり、ほかの 9 本は 0 のまま。そういう回路だ。
使う部品は 2 つ。
AND(アンド)は、入口が全部 1 のときだけ 1 を返す。1 つでも 0 があれば 0。
NOT(ノット)は、入口が 1 つで、0 と 1 をひっくり返す。
「3 の線」を作ってみる。
0011 は、8 の位が 0、4 の位が 0、2 の位が 1、1 の位が 1。
0 の桁は NOT でひっくり返してから、4 本そろって AND に入れる。
| 桁 | パターン 0011 では | AND に入れる線 |
|---|---|---|
| 8 の位 | 0 | NOT を通した線 |
| 4 の位 | 0 | NOT を通した線 |
| 2 の位 | 1 | そのままの線 |
| 1 の位 | 1 | そのままの線 |
パターンが 0011 なら、AND に入る 4 本は全部 1 になり、「3 の線」は 1。
1 桁でも違えば、どれかが 0 になって、「3 の線」は 0。
ほかの 9 本も、同じ作り方で作れる。
NOT 4 個(桁ごとに 1 個)と、AND 10 個。
どのパターンを入れても、1 になる線は多くて 1 本だけだ。
パターンを、パターンごとの線にほどき直すこの部品を、デコーダという。 『CPU のしくみ』を読んだ人は、第2回のデコーダを思い出してほしい。命令の上 4 桁から 16 本の線を作り、動かす箱の入口を開けていた。作り方はまったく同じだ。
棒ごとに、まとめる
次に、棒を 1 本だけ考える。 表の e の列を、縦に見てほしい。 e が光るのは、0・2・6・8 のときだ。
だから、「0 の線」「2 の線」「6 の線」「8 の線」のどれか 1 本でも 1 なら、e を光らせればいい。
ここで使うのが OR(オア)だ。
OR は、入口のどれか 1 つでも 1 なら 1 を返す。全部 0 のときだけ 0。
4 本の線を、1 つの OR にまとめる。
棒 e の回路
左の 4 つのスイッチを押して、パターンを替えてみてください
パターン 0000(0)
0 の線 だけが 1
棒 e が光る
破線の棒は、まだつないでいない
左の 4 つのスイッチが、パターンの 4 桁だ。押すと 0 と 1 が切り替わる。
真ん中の縦長の箱がデコーダで、右の辺から「0 の線」〜「9 の線」が横に出ている。
はじめは 0000。「0 の線」が 1 になり、棒 e が光っている。
4 の位のスイッチを押して 0100 にしてみてほしい。
「4 の線」に替わる。「4 の線」は e の縦の線につないでいないので、e は消える。
0010、0110、1000 では、e が光る。
● が、まとめている場所だ。 ● の並びは、表の e の列の ● と、同じ並びになっている。
押して、確かめる
残りの 6 本も、同じように作る。 棒ごとに OR を 1 個置き、表でその棒に ● が付いている数字の線を、全部つなぐ。
7 本の棒 シミュレータ
左の 4 つのスイッチを押して、パターンを替えてみてください
パターン 0000(0)
0 の線 だけが 1
光る棒:a・b・c・d・e・f
はじめは 0000 で、「0」が光っている。
スイッチを押して、0 から 9 まで、順に作ってみてほしい。
0001、0010、0011……。表のとおりの形が光るはずだ。
図の ● の並びを、2 節の表と見比べてほしい。 まったく同じ形をしている。
表の ● を 1 つ書くことと、配線を 1 か所つなぐことは、同じことなのだ。 表を書き終えた時点で、回路はもうできている。
部品を数えてみよう。 NOT 4 個、AND 10 個、OR 7 個。あわせて 21 個。 まとめている場所(●)は 49 か所で、これは表の ● の数と同じだ。
パターンを形にするのも、表を回路にするだけだ。どの棒を光らせるかの表を書けば、ゲートで組める。
この回路は、「7」がどんな形かを知らない。
0111 が来たら「7 の線」が 1 になり、その線につないである a・b・c の OR が 1 になる。それだけだ。
それを「7」と読んでいるのは、ここでもやはり、表示を見ている私たちである。
ちなみに、もっと少ない部品で作ることもできる。 表の c の列を見ると、c が消えるのは「2」のときだけだ。 それなら、9 本の線を OR でまとめなくても、「2 の線」を NOT でひっくり返せば、0〜9 では同じ光り方になる。 こうした工夫を重ねると、式は短くなっていく。 けれど、どんな工夫をしても、出発点はいつも、さっきの表である。
使わないパターン
4 桁のパターンは 16 通りある。
数字に使ったのは、0000 から 1001 までの 10 通り。
1010(10)から 1111(15)までの 6 通りは、使っていない。
上のシミュレータで、8 の位と 2 の位を 1 にして、1010 を作ってみてほしい。
どの棒も光らない。
デコーダの線も、1 本も 1 になっていない。
表に、1010 の行は無い。
行が無いから、デコーダに「10 の線」も無い。
表に書いていないパターンは、回路にも無いのだ。
ただし、これは、この回路をそう作ったからである。
さっきの「c は、2 の線の NOT」で作った回路なら、1010 では「2 の線」が 0 なので、c だけが光る。
意味のない、半端な形になる。
数字しか入ってこないと分かっているなら、それで困ることはない。 使わない 6 通りは「どう光ってもいい」ことにすれば、式はもっと短くできる。 どちらにするかも、表を書く人が決める約束である。
「あ」は、書けない
数字は、7 本の棒で書けた。
英字も、一部なら書ける。 「E」は a・d・e・f・g。「F」は a・e・f・g。「H」は b・c・e・f・g。「L」は d・e・f。「P」は a・b・e・f・g。 表に行を足して、デコーダに線を足せばいい。
けれど、「M」や「W」は書けない。 7 本の棒には、斜めの線も、真ん中を縦に通る線も無いからだ。
ひらがなは、なおさらだ。 「あ」の、丸く曲がった線は、どの棒を光らせても書けない。 掲示板の行き先の「品川」も、もちろん書けない。
棒の数を増やせば、書ける文字は増える。 けれど、増やすほど棒の形は細かくなり、それでも書けない文字が残る。
前回の初めに、駅の掲示板は「細かい点が光って文字を描く」と書いた。 掲示板は、7 本の棒よりも、ずっと自由に形を光らせている。
どんな形でも出せる光らせ方は、ないだろうか。
参考文献
- 松下俊介 著. 基礎からわかる論理回路. 第2版, 森北出版, 2021.7. 978-4-627-82842-1. https://ndlsearch.ndl.go.jp/books/R100000002-I031573740
- チャールズ・ペゾルド 著 ; 酒匂寛 訳. CODE : コードから見たコンピュータのからくり. 第2版, 日経BP, 2024.2. 978-4-296-08024-3. https://ndlsearch.ndl.go.jp/books/R100000002-I033318457
- Wikipedia. "Seven-segment display character representations". Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/wiki/Seven-segment_display_character_representations, (参照 2026-10-26).