小説でわかる補数と小数 ― 基本情報技術者試験対策

小説でわかる補数と小数 副業実験ラボ
小説でわかる補数と小数

魔導都市ビットニア。
天空に浮かぶ水路が光を屈折させ、街路を幾何学模様に染めている。建築物の壁には数字の列が刻まれ、そこから浮遊灯のような豆ライトがぷかぷかと漂い出る。この都市では「数」そのものが精霊の姿をとり、人々の暮らしを支える力となっていた。

だが――。
数の力は便利であると同時に、脆くも危うい均衡の上に成り立っている。
特に「負の力」、すなわち負の数の扱いを誤れば、数式はたちまち暴走し、都市を覆う大結界すら揺るがす。かつて記録の誤りによって都市の一区画が虚無へと沈んだこともあり、その恐怖は人々に今なお刻まれていた。

以来、負の数を安全に扱う術は厳重に秘され、ただ一冊の古文書に封じられている。
そこにはこう記されていた――

「補数をもって負を表せ」

しかし、その意味を正しく理解できる者は長らく現れなかった。

やがて時は流れ、魔導都市を支える結界は老朽の兆しを見せはじめる。
学舎の賢者たちは「新たな継承者」が必要だと口をそろえた。
数の精霊たちはざわめき、街路に浮かぶ豆ライトは一様に不安げに瞬いた。

やがて一人の名が挙げられる――
それは、まだ未熟な見習い魔導士にすぎない少年、レオン。

都市の命運を握ることになるとは知らぬまま、彼は小さな杖を携えて日々の修行を続けていた。
その瞳に、まだ「補数の真実」は映っていない。

だが、物語はすでに動き出していた。
ビットニアを救う冒険の幕が、静かに上がろうとしていたのである。

「古文書との出会い」

学舎の奥にある静かな書庫。
高く積まれた本棚の間を、豆ライトのような数字の精霊がふわふわ漂っていた。

レオンは机に突っ伏しそうになりながら、古びた羊皮紙を前にうなっていた。
「う〜ん……これ、ほんとに意味あるのかな……」
彼の頭の上には「+」と「−」の豆ライトがぷかぷかと浮かび、ミトンのような手でつかもうとすると、するりと逃げていく。

「レオン」
低く澄んだ声が響いた。

顔を上げると、深紫のローブに金糸の刺繍をまとったミレイユ師が立っていた。小柄な姿だが、その瞳は凛と輝き、弟子を圧する威厳を放っている。

「し、師匠!」
レオンは慌てて立ち上がり、ミトン手で机の上を指さした。
「僕、ずっと読んでみたんですけど、ぜんっぜん分からなくて! 数字がバラバラで、記号ばっかりで……」

ミレイユは黙って机に分厚い古文書を置いた。
表紙には丸と逆三角を組み合わせた「補数の紋章」が刻まれ、淡い光を放っている。

「レオン。この書を、あなたに託します」

「えぇっ!? ぼ、僕に!?」
レオンの瞳がまんまるになり、頬にピンクのチークが広がる。

ミレイユは小さな口元にわずかな笑みを浮かべた。
「都市を守るためには、新しい世代が“負の数”を正しく理解しなければならない。そのために、あなたが必要なの」

レオンはごくりと息をのんだ。
おそるおそるページをめくると、最初の行にただ一文だけが輝いていた。

――「補数をもって負を表せ」

「ほ、ほすう……?」
レオンは首をかしげ、豆ライトをつつくように指で宙をなぞる。
「でも、負の数って“マイナス”をつければいいんじゃないんですか? たとえば“−3”とか!」

すると、豆ライトたちが「−3」と並んで光った――が、次の瞬間、バチッと音を立てて弾け散った。

「うわっ!?」
レオンは飛びのき、髪の毛が静電気でぴょんと跳ね上がる。

ミレイユの表情が厳しくなる。
「レオン。負の数をただ“−”と記すだけでは、魔導式は暴走する。正しくは“補数”で表さねばならない」

「むむむ……」
レオンは顔を真っ赤にして、ページをじっと見つめた。

古文書の奥には、彼がまだ知らぬ無数の二進数が眠っている。
そしてその知識こそ、都市を救う唯一の鍵だった。

「二進の試練」

書庫の奥、ミレイユ師に導かれてレオンが辿り着いたのは、厚い扉の先にある小さな石の広間だった。
壁一面には幾何学模様の数字が刻まれ、浮遊灯がオレンジ色に灯っている。その中央に、ひときわ重厚な「試練の石盤」が鎮座していた。台形のその表面には淡い光の線が走り、見る者に威圧感を与える。

「ここが……試練の場?」
レオンは喉を鳴らしながら、マントの裾を握りしめた。

ミレイユは静かに頷く。
「レオン、古文書に記された知識を実際に試す時よ。最初の問いは、これ」

石盤がゴゴゴ……と音を立て、光の文字が浮かび上がった。

――「二進数で、−3を示せ」

レオンは一瞬、表情を明るくした。
「なーんだ、簡単じゃないですか!」

彼は自信満々に、宙へミトン手を突き出す。
「二進数で3は……0011! だから“マイナス”をつけて……1110っ!」

瞬間、石盤の表面に「1110」の文字が刻まれる。が――

バチッ!!!

石盤全体が赤く光り、ひび割れが走った。
「ひぃぃぃっ!?」
レオンの髪が逆立ち、目はまん丸。浮遊灯が「×」印の豆ライトになって、彼の頭上をぐるぐる回った。

さらに「1110」が暴走し、炎のようなエフェクトを撒き散らす。小さな爆発音が「ポン! ポン!」と間抜けに鳴り響き、煙がもくもくと立ち上る。

「ち、違うの!? これじゃないの!?」
レオンは慌てて足をばたつかせ、灰を払い落とした。

ミレイユは腕を組み、冷静に見守っていた。
「だから言ったでしょう。ただ“マイナス”を付けるだけでは術式は成立しないと」

「うぅ……」
レオンは涙目で石盤を見つめる。まるで「不正解」と言わんばかりに、石盤の番人の像がくちばし型の口で「コクコク」と首を振っていた。

その様子はあまりにシュールで、レオンは思わず吹き出しそうになる。だが石盤は再び光り、再挑戦を促すように「−3」という問いを浮かべ続けていた。

「ぼ、僕……どうすればいいの……?」
レオンの声はか細く震えた。

試練はまだ始まったばかりだった――。

「補数の真実」

石盤が赤く脈動し、広間全体が揺れた。
「わ、わわっ……! また爆発するの!?」
レオンは両手をぶんぶん振って逃げ腰になる。髪の毛は静電気でぴょんぴょん跳ね、目は涙目だ。

そのとき――。

「やれやれ、見てらんないなぁ」

軽やかな声が空中から響いた。すると、レオンの目の前にふわりと光の雫が現れ、次の瞬間、ちびキャラ姿の精霊に変わった。水色の髪がふわふわ揺れ、星型のハイライトがきらきら光る。

「えっ……だ、誰!?」
レオンはびっくりして、ミトン手を胸の前でばたつかせる。

「ボクはコンプリ。数の精霊さ。まったく、君、人間のくせに“負の数”もまともに扱えないなんてね」
ぷくっと頬を膨らませるコンプリは、腰に手を当てて得意げに笑った。

ミレイユが静かに頷く。
「この子があなたを導いてくれるでしょう。レオン、しっかり学びなさい」

コンプリは空中に指を走らせ、光の「0011」を浮かび上がらせた。
「3を二進数で書くとこうだね。で、君は“マイナス”だからって頭に−をつけて“1110”にした。そりゃ爆発もするさ」

「うぅ……」
レオンは耳まで赤くして項垂れた。

「いいかい? 負の数を表すには 補数 を使うんだ」
コンプリは指をぱちんと鳴らした。
すると「0011」の数字が反転して「1100」に変わり、さらに「+1」と輝いて「1101」になった。

「これが4ビットでの−3。つまり――ビットを反転して、1を足す。これが“2の補数”だよ!」

「おお〜っ!」
レオンの瞳がきらきら輝く。頭上に「!」マークの豆ライトがぽんぽん跳ねた。

コンプリは続けて、両手で大きな光の矩形を描いた。
「たとえば8ビットなら――3は 00000011。それを反転して 11111100、そこに1を足すと……11111101! これが正しい“−3”だ!」

「なるほど……!」
レオンは杖を握り直し、宙に光のコードを描き始めた。
「反転して……1を足す……これが補数……!」

杖の先から0と1の豆ライトが次々に飛び出し、円環を描いていく。
「00000011 → 11111100 → 11111101!」

光のコードが石盤に刻まれた瞬間、赤く脈打っていた石盤はふっと青白い光に変わった。ひび割れはすべて閉じ、石盤の番人像が「コクコク」と満足げにうなずいた。

「や、やったぁぁぁ!!」
レオンは飛び上がり、ミトン手を振り回して喜んだ。

コンプリは胸を張り、にやりと笑う。
「フフン、これで少しは頭が良くなったんじゃない?」

ミレイユは微笑を浮かべ、静かに告げる。
「レオン、あなたは負の数の真実を手に入れた。これで都市を守る力に、一歩近づいたわ」

石盤が金色に輝き、次なる試練への扉が開かれていく。

「光と影の水晶」

補数の試練を終えたレオンは、ミレイユ師とコンプリに導かれて都市の外れへと足を踏み出した。
そこには長らく封印されていた古代遺跡がそびえ立ち、入口には「小数の迷宮」と呼ばれる刻印が残されている。

「ここが……次の試練の場所?」
レオンはごくりと唾を飲んだ。

遺跡の内部は、巨大な水晶で満ちた幻想的な空間だった。青白い輝きが壁に反射し、床の幾何学模様を照らしている。中心にある大水晶がふっと光を放ち、文字を浮かび上がらせた。

――「0.625 を二進数で表せ」

「……えっ?」
レオンは目をぱちくりさせた。
「二進数って、整数を変換するやつじゃなかったっけ? 小数まで二進数にできるの?」

彼は慌てて杖を構え、宙に数字を書きなぐった。
「0.625って……0と625だから……二進数だと……えっと、0.625そのまま……?」

宙に浮かんだ「0.625」の豆ライトは一瞬光ったものの、すぐに「ぷしゅ〜」と消えてしまった。

「ちょ、ちょっと! 消えないでよ!」
レオンはミトン手で慌てて数字を追いかける。だが、水晶は反応せず、冷ややかな輝きを放つだけだった。

コンプリがひょいっと現れ、腰に手を当てて得意げに笑う。
「やれやれ、また困ってるね。君は整数ばっかり覚えて、小数のこと忘れてたんだ」

「うぅ……」
レオンはうなだれ、頭上に「?」マークの豆ライトがぽんぽん浮かんだ。
「でも……小数って、どうやって二進数にするんだ?」

ミレイユが静かに言葉を添える。
「この迷宮は“整数では表しきれない世界”を試す場所。負の数を乗り越えた次は、小数よ。レオン、しっかり学びなさい」

水晶は再び強く輝き、問いを突きつけるように「0.625」を空間に刻み直した。

レオンは杖を握りしめ、必死に思案した。
だが答えはまだ見えない――。

「分解の魔法」

レオンの描いた「0.625」はあっさりと消え去り、広間には再び冷たい光が満ちていた。
「うぅ〜……なんでダメなんだよ〜……」
レオンは頭を抱え、ミトン手で髪をぐしゃぐしゃとかき乱す。

そんな彼の横で、コンプリがぷかっと現れた。腕を組み、にやりと笑っている。
「君は整数のことばっかり考えてるからだよ。小数は“分数”として見なきゃ!」

「分数……?」
レオンは首をかしげ、頭の上に「?」マークの豆ライトがぽんぽん浮かぶ。

コンプリは宙に小さな光のピースを並べた。三角チップのように「1/2」「1/4」「1/8」と刻まれている。
「ほら、0.625ってのは“0.5”と“0.125”の和なんだ」

レオンは目を丸くする。
「えっ……0.5って1/2、0.125って1/8だから……つまり?」

コンプリはにんまり笑い、ピースをカチッカチッと組み合わせる。
「二進数の小数点以下は、左から“1/2, 1/4, 1/8, …”を順に表してる。だから――」

ピースが合体すると、光の列「0.101」が浮かび上がった。
「0.101(二進数)= 0.5 + 0.125 = 0.625!」

「おおお〜っ!」
レオンの瞳がきらきらと輝き、頭の上に「!」マークの豆ライトが跳ねた。
「つまり、0.625は二進数だと0.101なんだ!」

その瞬間、中央の巨大水晶がぱあっと光を放った。
壁に刻まれた幾何学模様が反応し、迷宮全体が青白い輝きに包まれる。

「やった……やっと分かった……!」
レオンは杖を高く掲げ、ミトン手でガッツポーズを取った。

水晶が大きく鳴動し、正答を喜ぶかのように「0.101」の光を刻んだ。そして奥の扉が音を立てて開かれ、次なる試練の道が姿を現す。

コンプリは胸を張り、ドヤ顔で腕を組んだ。
「どうだい? 少しは頭が良くなったろ?」

「うんっ!」
レオンは満面の笑みで頷いた。
「もう小数だって怖くない!」

だが――。
扉の奥から吹き抜ける風には、まだ試練の気配が潜んでいた。

インフォグラフィック: 小数の二進数変換

変換プロセス

1

分解

元の小数を2のべき乗の分数(1/2, 1/4, 1/8…)の和に分解する。

0.625 = 0.5 + 0.125
2

桁を特定

分解した各値が二進数のどの桁に対応するかを特定する。対応する桁を「1」、しない桁を「0」とする。

0.5 (1/2) 小数点第1位: 1
0.25 (1/4) 小数点第2位: 0
0.125 (1/8) 小数点第3位: 1
3

結合

特定した「0」と「1」を小数点の後に並べる。

二進数表記

0.101

「限界を知る」

水晶の扉を抜けると、そこにはさらに広い空間が広がっていた。
天井からは無数の光の滴が降り注ぎ、床にはまるで鏡のような水面が広がっている。
中央に浮かぶ水晶が、再び問いを浮かび上がらせた。

――「0.1 を二進数で表せ」

「0.1……?」
レオンは首をかしげた。
「さっきみたいに分数で分解すればいいんだよね?」

彼は杖を掲げ、宙に「1/10」と書きなぐる。
豆ライトがぽこぽこと現れ、二進数の形に変わろうとする。

……しかし、次の瞬間。

「0.0001……ん? 0.00011……え? 0.0001100……??」

豆ライトたちが際限なく続く列を作り始めたのだ。
レオンは目を白黒させ、慌てて両手を振る。
「ま、待って待って! 止まらない! どこまで行くのこれぇぇ!?」

光の列は水晶の間をぐるぐる巡り、壁いっぱいに数字を映し出した。
0.00011001100110011……。
同じパターンが延々と繰り返され、果てが見えない。

「うわぁぁ……! 終わらない……! 僕、一生書き続けなきゃいけないの!?」
レオンは膝をつき、頭の上に「∞」マークの豆ライトがくるくる回った。

そこで、コンプリがひょいっと現れ、ニヤリと笑った。
「そう、これが“限界”さ。すべての数を二進数でピタッと表せるわけじゃない。
0.1は二進数にすると“循環小数”になって、0.000110011…って繰り返しになるんだ」

「じゅんかん……小数……?」
レオンはぽかんと口を開ける。

ミレイユ師が静かに頷いた。
「だからこそ、術式や計算では“近似”を使う必要がある。
数の世界には、完全に表せないものも存在する――その事実を受け入れなさい」

レオンはしばらく呆然としていたが、やがて小さく笑った。
「……そうか。数の世界にも、届かない場所があるんだね」

彼の頭上の「∞」マークがやわらかく光り、次第に静かに溶けていった。
水晶は満足したように輝きを増し、迷宮のさらに奥へと続く道を示した。

「補数も、小数も……分かったつもりだったけど、まだまだ知らないことがいっぱいだ」
レオンは杖を握りしめ、決意を新たにする。

こうして彼は「数の理」の奥深さと、その限界を初めて知ったのだった。

エピローグ

迷宮の光を抜け、レオンはついに魔導都市ビットニアへと帰還した。
街路には幾何学模様の石畳が広がり、浮遊灯の豆ライトたちが「11111101」や「0.101」の輝きを映して踊っていた。

「おかえりなさい、若き賢者よ!」
市民たちが小さな旗を振りながら、ちびキャラの笑顔で出迎える。
彼らの頭上には、正しい補数や二進小数を示す光が灯っていた。

レオンは頬を赤くしながら杖を抱きしめた。
「ぼ、僕……本当にやれたんだ……!」

そこへ、ミレイユ師が歩み寄る。
紫のローブを翻し、凛とした瞳で弟子を見つめる。

「レオン。補数を学び、小数の限界を知った。あなたはもう、ただの見習いではないわ」
彼女は少し間を置き、静かに告げた。
「――数を制する者は、魔法を制す」

レオンの胸に、その言葉が深く刻まれる。
補数の奥に潜む“負の力”。
小数に隠れた“近似と限界”。
それらを理解した今、彼は都市を守る「数の賢者」として認められたのだ。

頭上を漂う豆ライトが「∞」から「★」へと変わり、夜空に散っていく。

コンプリが腕を組んでドヤ顔で笑った。
「フフン、ボクのおかげだね!」
レオンは苦笑いしながらも頷いた。
「うん。でも、まだまだ学ぶことはいっぱいある」

彼は杖を高く掲げ、前を見据えた。
「次は――論理回路を学ぶ旅に出る!」

夜空を背に、レオンの瞳は新たな決意に燃えていた。
数と魔法が織りなす冒険は、まだ始まったばかりだった――。

コメント

タイトルとURLをコピーしました