[logo] Web連載「数学ガールの秘密ノート」
Share

第103回 シーズン11 エピソード3
変幻ピクセル(前編)

書籍『数学ガールの秘密ノート/ビットとバイナリー』

この記事は『数学ガールの秘密ノート/ビットとバイナリー』として書籍化されています。

無料でWeb立ち読み アマゾンで購入

$ \newcommand{\BIGUL}[1]{\underline{\Large#1}} \newcommand{\SUM}{\displaystyle\sum} \newcommand{\BAR}[1]{\bar{#1}} \newcommand{\TEXT}[1]{\textbf{#1}} \newcommand{\REMTEXT}[1]{\textbf{#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}_{\REMTEXT{$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をスキャナに入れました。 すると、スキャナとプリンタが動きだし、無事に印字が終了しました。

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

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

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

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

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

無料で「試し読み」できるのはここまでです。 この続きをお読みになるには「読み放題プラン」へのご参加が必要です。

ひと月500円で「読み放題プラン」へご参加いただきますと、 420本すべての記事が読み放題になりますので、 ぜひ、ご参加ください。


参加済みの方/すぐに参加したい方はこちら

結城浩のメンバーシップで参加 結城浩のpixivFANBOXで参加

(2015年1月23日)

書籍『数学ガールの秘密ノート/ビットとバイナリー』

この記事は『数学ガールの秘密ノート/ビットとバイナリー』として書籍化されています。

書籍化にあたっては、加筆修正をたくさん行い、 練習問題や研究問題も追加しました。

どの巻からでも読み始められますので、 ぜひどうぞ!

無料でWeb立ち読み アマゾンで購入

[icon]

結城浩(ゆうき・ひろし) @hyuki


『数学ガール』作者。 結城メルマガWeb連載を毎週書いてます。 文章書きとプログラミングが好きなクリスチャン。2014年日本数学会出版賞受賞。

Twitter note 結城メルマガ Mastodon Bluesky Threads Home