CS四方山話(第24話)暗号を理解するための数学の世界その3
小学生からの数学シリーズ・第三弾「繰り上がり・繰り下がり」
さて、今回は「小学校からの数学」シリーズ・第3弾です。前回の第2弾(CS四方山話 第23話)で取りこぼした、小学1年生で学ぶ「繰り上がり・繰り下がり」に関して書きます。「繰り上がり・繰り下がり」の背景には「進数」という概念があります。そこにも触れつつ、小学1年生と共に学びましょう。
1進数(unary number)
「1進数」という言葉を耳に(目に)する機会は少ないでしょう。しかし「数」の基本は「1進数」です。皆さんも、その昔、数え棒(かぞえぼう)、おはじきで「数」を学んだ経験があるのではないでしょうか? 記憶の奥底を探ってみてください。
ここでは、おはじき「●」を使ってみましょう(表記上「|」は「1」と紛らわしいので)。
「●」1つが「1」です。「●●」は「2」ということになります。
● = 1
●● = 2
●●● = 3
:
●●●●●●●●● = 9
こんな感じです。直感的で分かり易いですね。
では、これはどうでしょう?
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
パッと見では「いくつ」なのか分からないですね(特殊な能力持っているヒトは別として)。筆者は数えなければ分かりません。
そこで並べ方を工夫して見ましょう。
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
●●●●●●●●●●
10個の塊が10あるので、10 x 10 = 100 と分かり易くなります。
でも「100」と書くのに比べて、多くのスペース = 桁数(ここでは文字数)が必要となります。なにせ、値 = 桁数(文字数)ということになりますので。
2進数(binary number)
1進数では、おはじきの種類が「●」1つだけでしたが、今度は、おはじきの種類を「●」と「○」の2つにしてみましょう。
● = 1 で、これは1進数の時と同じです。
○ = 0 で、何も無い状態を表すことにします。
そして、数字の並びに意味を持たせます。右端は「2つ」にならない分を表すことにします。右から2つ目は2つの集まりを表すことにします。このルールに従うと「2」は「2つの集まり」が1つあり、それ以外には無いので「●○」と表すことになります。
表現を変えると、● = 1 で、○ = 0 なので、1 と 0 は表現できますが、2 を表す記号が無いので、溢れた分を左側に●として書くことにするということです。この「溢れた」が「繰り上がり」ということです。
数式的に書くと「● + ● = ●○」となります。
「3」はどうなるでしょうか?
●○ + ● ということになります。
右端が○なので、ここを●にすれば、良さそうです。●●です。左側の●は「2」を表していて、右側の●は「1」を表すので「2 +1 = 3」ということで合っています。
そこに、もう1つ●を足すとどうなるでしょうか? 右端の●は埋まっているので、もう1つ●を足すと溢れます、溢れた分を左側に持っていきます。
左側にも●があり、やはり溢れます。そこで、もう1つ左側に枠を作ります。結果「●○○」となります。左端の●のところは、「2つの集まり」が2つ、つまり「4」を表す枠になります。
この「枠」を「桁」と呼ぶことにしましょう。
同じように1つずつ●を足していきます。溢れたら枠、つまり桁を増やして表現します。
● = 1 = 0b1
●○ = 2 = 0b10
●● = 3 = 0b11
●○○ = 4 = 0b100
:
●○○● = 9 = 0b1001
:
●●○○●○○ = 100 = 0b1100100
(★注)ここで上記右端の「0b」とは、プレフィックス(接頭辞)で、binary numberすなわち2進数として扱うという意味です。
1進数よりは少ない桁数(文字数)で表現できます。皆さんが日々お使いのパソコンやスマホは、この2進数で演算を行っています。なぜ2進数なのかというと、● = ON(電圧がHIGH)、○ = OFF(電圧がLOW)ということで、電気的に(電子回路的に)扱い易いからです。
まとめ
1進数のせいで、ここまでで既に多くの文字数を消化してしまっています。そして、今回用意した四方山話が長い……。ということで、今回はここまでとします。次回(第25話)は、「新解釈・小学1年生」の「繰り上がり」「繰り下がり」の本丸である「10進数」の話(+16進数の話)にしようと思います。
リニューアル後、1話辺りの内容が薄いのでは? いえいえ、そんなことはありません。小学1年生が基準ですので「分かり易く」が基本です。詰め込み教育は良くないのです(もっとも、ゆとり教育は、もっとダメだったと思っていますが)。
四方山話
何か情報を得るためには「一定のコスト」が必要です。書籍の場合は本代が掛かりますし、有償のセミナーであれば受講料が掛かります。しかし、そのコストの中で最も大きいモノは、本代やセミナーの受講料ではなく「自分の工数」つまり、自分の時間です。ネットから情報を得る場合、お金は掛からなくても工数は掛かります。無料セミナーも同様です。
「工数」という考え方は、ビジネス上、絶対に必要な概念です。納期までに与えられる(=使える)時間は限られています。それが「工数」です。会社(組織)はその「工数」のために、給与を支払っている訳でつまりはコストです。それ以上に重大なことがあります。それは、それぞれの 「人生に与えられた時間は限られている」 ということです。つまり、人生で自分が使える工数は限られており、その時間を何に使うのかは、真面目に考えてみる価値があるでしょう。
話を戻します。何か情報を得るためには、貴重な「工数」が必要です。使ったコスト、つまり、使った「あなたの時間」は戻って来ません。その時間を使った結果、何を得たいのか? 何が得られるのか? それが重要です。時間を使った結果として得られモノは「経験」です。もう少し範囲を狭めると「知見」ということになります。
得た 経験 や 知見 を活かすのか(どう成果に繋げるのか)を意識することは、時間を無駄にしないために大切だと思います。得た 経験、知見(≒ 情報)の活かし方にはいろいろあります。
特定のヒトの「趣味」という情報を得たとすると、その情報を活かして、その趣味にまつわる話題を振って、一定の密度のある会話に持ち込み、相手との距離を縮めるという成果に繋げることができます。特定のヒトの「仕事」という情報を得たとすると、最近の時事ネタでその仕事に関係しそうな話題を振って、一定の密度のある会話に持ち込み、相手との距離を縮めるという成果に繋げることができます。
これは、銀座のお店の(優秀な)キャストが日々当たり前のように行っているルーチンです。つまりは「営業の定石」ということになります。
技術屋さんの場合だと、新しい技術(ex. ChatGPT)に触れたとすると、それを深掘りして理解して(ex. 自分で使ってみて)、情報発信して(ex. 試したことを誰かと共有して)、(ex. 違う観点や意見を聴いて)理解を深めたり、仕事に活かすこと(ex. 今後のプロジェクトへの適用を図ること)を考えるといった話になるでしょう。
いずれにしても能動的に情報を収集し、それを咀嚼、整理するという活動が無ければ成立しません(IT = Information Technology の根幹はここにあるべきだと思います)。
筆者の場合、放っておくと思考が発散する、(逆方向に傾くと)特定の内容に偏るという傾向を持っています。これらを緩和する方策の1つとして、情報収集したら、情報発信し(= 得たモノを整理することにもなる)、反応を得る(= 次のステップにつなげるヒントを得る)という行動(ルーチン)に持ち込んでいます。
そのルーチンの一部が、この「CS四方山話」「CS白狐村塾」というオンライメディアでの連載であり、別途配信を行っている「NEWS Cyber Security」というメーリングリストであったりします。
※「NEWS Cyber Security」は、筆者がサイバーセキュリティ関連のニュース一覧をまとめて、ご希望の方にお送りさせていただいているものです。ご希望の方はこちらよりご連絡ください。
今回もお付き合い頂き、ありがとうございます。
CS四方山話の過去の記事はこちら(合わせてお読みください)

中村 健 (Ken Nakamura)
株式会社SYNCHRO 取締役 CTO
機械屋だったはずだが、いつの間にかソフト屋になっていた。
以前は計測制御、知識工学が専門分野で、日本版スペースシャトルの飛行実験に関わったり、アクアラインを掘ったりしていた。
VoIPに関わったことで通信も専門分野に加わり、最近はネットワークセキュリティに注力している。
https://www.udc-synchro.co.jp/
サイバーセキュリティ四方山話の最新話は、メールマガジンにてもご案内致しています。是非JAPANSecuritySummit Updateのメールマガジンにご登録ください。
メールマガジンの登録はこちらからお願いします。