第103回 変幻ピクセル(前編)

「そんなパターン、ほんとーに計算で作れるの?」とユーリが言った。
$ \newcommand{\BIGUL}[1]{\underline{\Large#1}} \newcommand{\SUM}{\displaystyle\sum} \newcommand{\BAR}[1]{\bar{#1}} $
登場人物紹介
:数学が好きな高校生。
ユーリのいとこの中学生。のことを《お兄ちゃん》と呼ぶ。
テトラちゃんの後輩。好奇心旺盛な《元気少女》。
ミルカさん:数学が好きな高校生。のクラスメート。長い黒髪の《饒舌才媛》。
リサ:自在にプログラミングを行う無口な女子。赤い髪の《コンピュータ少女》。

駅にて

テトラ「おはようございます、ユーリちゃん。……あれ? 先輩は?」

ユーリ「お兄ちゃん、インフルエンザになっちゃった! だから、双倉図書館(ならびくらとしょかん)の 《変幻ピクセル》イベントには行けないって」

テトラ「ええっ! それじゃ、お見舞いに行かなくては!」

ユーリ「インフルうつるからだめだよー、テトラさん。双倉図書館、二人でいっしょに行こ!」

テトラ「そう……ですね」

ということで、本日の語り部はあたし、テトラということになりました。
えっと、あの、ど、読者のみなさま、よろしくお願いします(ぺこり)。
今日はみんなで電車に乗って、 双倉図書館のイベントに参加しようという予定でしたが、 先輩がいらっしゃらないようです。ちょっと、残念……かな。

ユーリ「双倉図書館に行くの、すごく久しぶり!」

テトラ「そうですね。今日の《変幻ピクセル》イベントは、コンピュータの中の $2$ 進数の話らしいですよ。 いろんな展示物があって、楽しそうです」

ユーリ「テトラさんは、コンピュータのこと詳しーの? プログラムとか書ける?」

テトラ「いえいえ、詳しくはありません。興味はあるので、少し勉強していますけど。 リサちゃんは詳しいですよね」

ユーリ「リサさん、こないだ会ったよ! あんまりしゃべらないよね」

テトラ「そうですね。今日の《変幻ピクセル》イベントでは、リサさんがナビゲートしてくれるはずですけど……」

双倉図書館にて

あたしたちは双倉図書館に到着すると、リサちゃんと合流して、 会場になった部屋を回っていくことにしました。

ユーリ「そーいえば、今日はミルカさまは? 会場のどこか回ってるの?」

リサ「インフルエンザ」

ユーリ「へー、すごい偶然。流行ってるんだねー。うちのお兄ちゃんもだよ」

リサ「……」

テトラ「……」

リサ「順路はこの部屋から」

ユーリ「早く入ろ!」

テトラ「ちょっ、ちょっと待ってください……」

あたしたちが部屋に入ると、機械が二台並んでいました。 一台は赤、もう一台は青、 どちらも手のひらくらいの大きさです。

リサ「スキャナとプリンタ」

スキャナ(Scanner)とプリンタ(Printer)

ユーリ「紙がはさまってるよ」

テトラ「scannerは紙をscanする機械で、printerは紙にprintする機械ですね。スキャナは読み取りで、プリンタは印刷でしょうか」

リサ「壁に解説パネル」

解説パネル(概要)
  • 赤い機械はスキャナです。紙に書かれた絵を読み込む機械です。
  • スキャナは、読み込んだ白黒の情報を数に変換してプリンタに送信します。
  • 青い機械はプリンタです。紙に絵を印刷する機械です。
  • プリンタは、受信した数を白黒の情報に変換して書き込みます。

ユーリ「ふーん」

リサ「全体図」

解説パネル(全体図)

ユーリ「あ、そゆこと? スキャナで絵を読んで、プリンタが印刷するの?」

テトラ「でも、すごく小さいですよね」

リサ「最小実験キット」

テトラ「?」

リサ「 $1$ 行 $16$ ビット」

ユーリ「よくわかんない」

スキャナの仕組み

解説パネル(スキャナ)



  • スキャナには $16$ 個の受光器が並んでいます。
  • それぞれの受光器は《白は $0$ 》《黒は $1$ 》という $1$ ビットの情報を読み取ります。
  • 一度に $16$ ビットの情報を読み、 $2$ 進法で $1$ 個の数に変換します。
  • スキャナは $16$ ビット読み取るごとに、その数を送信します。

ユーリ「ふーん……ここに書いてる《 $2$ 進法で $1$ 個の数に変換》って?」

テトラ「きっと、こういうことですよ。 $16$ 個の受光器が読み取った $s_{15},s_{14},\ldots,s_{1},s_{0}$ という $16$ ビットがありますよね。 あ、 $1$ ビットは $0$ か $1$ かのどちらかなんですけど、 その $16$ ビットを使って、こんな計算をするんです」

$$ 2^{15}s_{15} + 2^{14}s_{14} + \cdots + 2^{1}s_{1} + 2^{0}s_{0} $$

ユーリ「あ、わかったわかった。 $2$ 進法だもんね!」

リサ「 $(s_{15}s_{14}\cdots s_{1}s_{0})_2$ 」

テトラ「たとえば、$(0000 0000 0000 0101)_2$ならこうなりますね」

$$ ( 0000 0000 0000 0101 )_2 = 2^2+2^0 = 4 + 1 = 5 $$

リサ「確認クイズ」

解説パネル(確認クイズ)
スキャナは $16$ ビットの情報を読み、 以下のように $2$ 進法で $1$ 個の数に変換します。
$$ (s_{15}s_{14}\cdots s_{1}s_{0})_2 = 2^{15}s_{15} + 2^{14}s_{14} + \cdots + 2^{1}s_{1} + 2^{0}s_{0} $$
では、この数は何通りあるでしょうか。

ユーリ「 $16$ 通り……じゃない!じゃない! $(0000 0000 0000 0000)_2$ から $(1111 1111 1111 1111)_2$までだから……」

テトラ「 $s_{15}$ が $0$ か $1$ かの $2$ 通り、 そのそれぞれに対して $s_{14}$ が $0$ か $1$ かの $2$ 通り、 そのそれぞれに対して $s_{13}$ が $0$ か $1$ かの $2$ 通り、 ……ずっと続いて最後に、 そのそれぞれに対して $s_{0}$ が $0$ か $1$ かの $2$ 通りですね。 全部で $2$ の……何乗でしょう」

ユーリ「 $2$ の $16$ 乗かにゃ?」

$$ \underbrace{2 \times 2 \times \cdots \times 2}_{\text{ $16$ 個の $2$ }} = 2^{16} = 65536 $$

リサ「 $65536$ 通り」

解説パネル(確認クイズの答え)
スキャナは $16$ ビットの情報を読み、 以下のように $2$ 進法で $1$ 個の数に変換します。
$$ (s_{15}s_{14}\cdots_{1}s_{0})_2 = 2^{15}s_{15} + 2^{14}s_{14} + \cdots + 2^{1}s_{1} + 2^{0}s_{0} $$
この数は、 $2^{16} = 65536$ 通りあります。
$$ \begin{array}{rr} 0 & 0000 0000 0000 0000 \\ 1 & 0000 0000 0000 0001 \\ 2 & 0000 0000 0000 0010 \\ 3 & 0000 0000 0000 0011 \\ \vdots& \vdots \\ 65532 & 1111 1111 1111 1100 \\ 65533 & 1111 1111 1111 1101 \\ 65534 & 1111 1111 1111 1110 \\ 65535 & 1111 1111 1111 1111 \\ \end{array} $$

ユーリ「 $6$ 万 $5$ 千 $5$ 百 $3$ 十 $6$ 通りもあんの!?」

リサ「それで $1$ 行分」

ユーリ「 $1$ 行分って?」

リサ「 $16$ 行分繰り返して $1$ 枚の絵を送る」

リサちゃんはそう言って、スキャナ用のプログラムを見せてくれました。

テトラ「 $\textit{S5}$ 行で $1$ 行分の $16$ ビットを読んで、 $\textit{S6}$ 行でその数 $s$ をプリンタに送信するということですね。 それを、 $k = 0$ から $k = 15$ までの $16$ 回繰り返す……」

プリンタの仕組み

ユーリ「プリンタもおんなじ感じ?」

テトラ「プリンタは、ちょうど逆になるわけですよね。 $0$ は白で、 $1$ は黒に」

リサ「 $0$ は印字無し」

解説パネル(プリンタ)



  • プリンタは $16$ ビットの数を受信することができます。
  • プリンタには $16$ 個の印字装置が並んでいます。
  • それぞれの印字装置に $1$ ビットの情報を与えると《 $0$ は印字無し》《 $1$ は■を印字》という処理を行います。

テトラ「あ、白い紙に印字するので、 $0$ は何もしないんですね」

リサ「プログラム」

テトラ「先ほどのSCANNER-SCANと、このPRINTER-PRINTは、やっていることは違うけれど、繰り返すところはよく似ていますね」

実行してみよう

ユーリ「ねー、リサさん。だいたいわかったから、やってみよーよ!」

リサ「《さん》は不要。入力のPaper 1はこれ」(咳)

Paper 1(入力)

ユーリ「あ、さっきのお化けの絵じゃないんだ」

テトラ「Fですか……どうしてFなんでしょう」

ユーリ「この紙をスキャナに入れればいーんだよね! ユーリやる!」

リサ「プリンタに白紙を」

あたしたちは、 プリンタにPaper 2として白紙を入れ、先ほどのPaper 1をスキャナに入れました。 すると、スキャナとプリンタが動きだし、無事に印字が終了しました。

ユーリ「できたー! って、これじゃコピー機だね。同じだもん」

スキャナとプリンタを接続して動かした


※左がスキャナに入れた紙、右がプリンタで印字された紙。

リサフィルタを入れてないから」

ユーリ「フィルタって?」

この続きは有料会員登録をすると
読むことができます。
cakes会員の方はここからログイン

1週間無料のお試し購読する

cakesは定額読み放題のコンテンツ配信サイトです。簡単なお手続きで、サイト内のすべての記事を読むことができます。cakesには他にも以下のような記事があります。

人気の連載

おすすめ記事

ケイクス

この連載について

初回を読む
数学ガールの秘密ノート

結城浩

数学青春物語「数学ガール」の中高生たちが数学トークをする楽しい読み物です。中学生や高校生の数学を題材に、 数学のおもしろさと学ぶよろこびを味わいましょう。本シリーズはすでに12巻も書籍化されている大人気連載です。 (毎週金曜日更新)

この連載の人気記事

関連記事

関連キーワード

コメント

brv00 |数学ガールの秘密ノート|結城浩|cakes(ケイクス) https://t.co/KSLUtjWKvp テトラちゃん、一人称 "あたし" なのか。 #今頃気づいたのか 5年弱前 replyretweetfavorite

shiano_blue 読み逃してしまった…。 約5年前 replyretweetfavorite

kazuki_0014 |数学ガールの秘密ノート|結城浩 @hyuki |cakes(ケイクス) 主人公の風邪、早く治るといいですね https://t.co/e5MI4UFvCB 約5年前 replyretweetfavorite

aramisakihime 突然のスレッドお化け坊やに吹きました。 >  約5年前 replyretweetfavorite