Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Continuing story of elementary mathematics-4

It's a small world forever

とあるところに数字が1桁しか使えない国がありました。
最近、負数を補数で表しています。
1桁なので0から9までの10とおりしかありません。
一番大きい数は5.一番小さい数は6です。

あれれ?
また、お城で何か起こってるみたい・・・


城内に響き渡る声

お殿様 「じい!!じい!!なにをしておる、すぐ参れ」
じい 「ははぁ、殿、如何なされましたか」
お殿様 「じい、余は『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】 』がほしいぞよ、今なら1両と書いてある、すぐに買ってまいれ」
じい 「殿、お言葉を返すようではありますが我が国は財政難、蔵には1両もございません」
お殿様 「嫌じゃ、余は『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】 』が欲しいのじゃ、今日はシャンシャンと一緒に『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】 』を見ながら寝るのじゃ、今すぐ買ってまいれ!!」
じい 「殿、蔵には1両もございませぬ、ここはひとつ・・・」
お殿様 「嫌じゃ嫌じゃ、今すぐ買ってまいれ!!『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】 』じゃ、『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】 』が欲しいのじゃ!!」


控えの間。
じい 「お殿様のワガママには困ったものじゃ」
家臣 「しかし『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】』を買わなければ殿が・・・」
じい 「うむ、わかっておる。このうえはまた越後屋から1両借りるしかあるまい」
家臣 「ご家老、しかし越後屋からはシャンシャンのぬいぐるみを買うため1両」
じい 「うむ」
家臣 「さらに、『シャンシャンすくすくカレンダー 2019年カレンダー』を入手するために1両」
じい 「ううむ、しかし『祝日訂正シール』も付いておったぞ」
家臣 「ご家老!さらに、さらに、恩賜上野動物園年間パスポートを入手するために1両」
じい 「うううむ、しかし4回ぶんの入園料で1年間何度でも入園できるという優れものじゃ」
家臣 「ご家老!!さらに、さらに、またさらに、恩賜上野動物園にてシャンシャン見物をした際に『竹皮パンダ弁当』を皆に振る舞うために3両」
じい 「ううううむ、不忍の池を見ながらの『竹皮パンダ弁当』は美味であったな、箸袋にはシャンシャンのイラストが・・・」
家臣 「ご家老!!!」
じい 「ううううぅぅぅむ、すでに借金は6両、これ以上借金はできん」
家臣 「こまりましたな」
じい 「こまったものじゃ」


突然、セーラー服を着た女が乱入。
じい、家臣 「なにものじゃ!!」
セーラームーソ 「愛と正義の、セーラー服美少女戦士、セーラームーソ。月に代わって、お仕置きよ!!」
じい 「曲者じゃ、であえであえ!!」
セーラームーソ 「ちょっとまって、借金を増やしたいなら一番大きい数を減らせばいいのよ」
家臣 「何故」
セーラームーソ 「一番大きい数を3、一番小さい数を4にすれば6両まで借金できるわ」
じい 「少し待たれい」


じいと家臣が相談。
じい 「最大3とな」
家臣 「3ですな」
じい 「最近不景気で蔵に3両を超える金を見たことがない」
家臣 「3両と言えば麻布十番に家が建ちまする、そのような大金は我が藩では夢のまた夢」
じい 「麻布十番に家が建つとは思えんが、我が藩の財政として最大3両、借金が6両までできるというのは・・・」
家臣 「これなら殿に『おめでとう! シャンシャン 誕生1年記念フォトブック【特製シール付き】を献上することも夢ではございませぬ」
じい 「そうじゃな、これもお家のため・・・」


じいと家臣、セーラームーソと向き合う。
じい 「これ、セーラームーソとな、一番大きい数を3にするぞよ」

これで問題ないんじゃない?

補数でマイナスの数を表す場合、どこまでがプラスでどこからがマイナスなのかは適当に決めてよい、ということ。 前回は5までがプラスだったけえど、今回の騒動でプラスは3までになっちゃった。 どこからマイナスになるのかはその時に「ここからマイナスね」と決めた数字を覚えておく。 これでめでたしめでたし。

でも、なんか面倒くさくない? ’ー’記号みたいに見た瞬間に「あぁ、マイナスだね」ってわかるようにしたいよね。

16進数で考えてみよう

ここでやっと16進数登場。 16進数は0からFまでの16個の値を1桁で表すことができる。 この16進数に対して7まではプラス、8からはマイナスとしてみる。

16進数 2の補数 7までを
プラスとした値
2進数
0000
F 0001
E 0010
D 0011
C 0100
B 0101
A 0110
0111
-8 1000
-7 1001
A -6 1010
B -5 1011
C -4 1100
D -3 1101
E -2 1110
F -1 1111

16進数にしても7まではプラス、8からはマイナスね、と覚えておかなければいけないような気がする、が表の一番右、2進数の列をよーく見てみると・・・ そう、マイナスの時は一番左の桁(最上位)が必ず1になっている。 というか、2進数で表した時に最上位の桁が1になる数はマイナスになるようにプラスとマイナスの境界をえらんでいる。

16進数の1桁は2進数4桁であらわすことができる。 2 = 16 だからね。 だから16進数のちょうど半分までをプラス、それ以降をマイナスにわりあてれば2進数で表したときの最上位桁を見ればプラス、マイナスの判定ができる。

プラスとマイナスの境目を自由に変えることはできないけれどもプラスマイナス判定は一目瞭然。

これが、10進数だと上手くいかない。 やってできないことはないが、非効率だし面倒が多い。

Epilogue

しかし、コンピュータの世界では2進数を基本にして動作するからこの方法、2進数で最上位が1ならマイナスと考えるのは都合が良いわけ。 昔は符号用のビットを別途設ける方法や1の補数で負数を表す方法を採用していたCPUもあったようだけど現在では上の表の方法がとられている。 この辺りは別の機会に。 とりあえず補数の巻はこれでおしまい。

あれ、お城からなにか声が聞こえてくるよ・・・


お殿様 「じい、こちらに参れ」
じい 「ははぁ」
お殿様 「中山殿のところにこれを届けて来てくれぬか」
じい 「中山殿のお城ですな、して、道順は」
お殿様 「お城を出てまーっすぐ行くと道が六本に分かれておって、どれでもよいから一つ選ぶのじゃ」
じい 「はぁ?」
お殿様 「でな、選んだ道をまーーーっすぐ行くとまた道が六本に分かれておって、またどれでもよいから一つ選んでまーーーーっすぐ行くと中山殿のお城じゃ、わかったか?」
じい 「わかったような、わかららんような・・・、ようするにどの道を行っても中山殿のお城に着く、というわけですな」
お殿様 「そうじゃ、ただな、どちらの分かれ道も1本は狐に化かされて二度と帰ってこれんからな、気を付けていくのじゃぞ」
じい 「殿、その化かされる道はどの道なのでありましょうか」
お殿様 「知らん」
じい 「殿!!そんなご無体な・・・」
お殿様 「ではたのんだぞ」
じい 「殿!!」
ごん 「ちょッ」

なにか、じいが大変なことに・・・
というわけで次回からはみんな大好き、確率。
数A、覚えているかな?