アドベントカレンダー
この記事は東京大学きらら同好会 Advent Calendar 2022の 日目の記事です。
昨日( 日目)の記事は
さんの「【ブックレビュー】『川越の建物 蔵造り編』」でした!
明日( 日目)の記事(?)は
会長のぼざろ
ページ漫画です!楽しみですね!
こんにちは
おはようございます,こんばんは,一之瀬めろんです.この記事は会としての公式見解ではなく,私の勝手な見解です.念のため.
この記事ではいかに数字 がいかにキリが良いかについて語っていきます.とはいうもののキリの良し悪しなんてどうあがいても人の主観です.私は
とか
にキリの良さを感じますがどうせ
とか
の方が好まれるんでしょ.知ってるよ.
十進法に囚われた視野の狭い奴らめ...
部室 
「ステラのまほう」で主人公のたまちゃん達が所属する同好会「死んだ魚の目日照不足シャトルラン部」の部室は部室 です.これのキリの良さは椎奈先輩が
巻
ページ,たまちゃんが
巻
ページでそれぞれ認めています.
この記事ではタイトル通り, という数字がいかにキリが良いかについて書いていきます.
全くもってキリの良さがわからない方にはキリの良さが伝わるように, の方がキリが良いじゃないか派の方にはこれを読み終わっているころには
派に改宗するように書きましたので読んでいってくださいな.
既に を十分キリが良いと思っている方は,
ブラウザバック他のアドカレの記事も見ていってくださいな!
二進法
コンピュータは と
で*1値を表したり計算したりしているというのはよく知られた話でしょうか.
十進法と二進法の値は以下の表のように対応しています.詳しくは高校数学の美しい物語とか読んでください.
| 十進法 | 二進法 | 十進法 | 二進法 | |
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
十進法の は二進法で
です.キリが良いでしょう?
ここで記事を締めてもいいんですが,もうちょっとだけ続くんじゃ.というかここからが本番なんじゃ.
十進法の は二進法で
です.
が揃ってキリ良くなるのは,
だからです.
しかし, (二進法では
)の方がキリ良く見えませんか?
と
なら後者の方がキリ良く見えるでしょう.
しかしながら,コンピュータの世界というコンテクストがあると,話が変わってきます.
コンピュータの世界
人間であれば大抵の場合,物を数えるときには ,
,
と,
から順番に数えます.人間の世界の「自然数」は
から始まります.
しかし,コンピュータの世界では,,
,
,
と,
から順番に数えます.コンピュータの世界の「自然数」は
から始まります.
つほど例を挙げましょう.
配列の index
ほとんど全てのプログラミング言語には,「配列」と呼ばれる(あるいは名称が違えど,相当する)機能があります.これは,たくさんの値をまとめて管理できる機能です.数列みたいなものを管理できます.
C,C++,Java,Ruby,Rust など,ほとんどのプログラミング言語*2は配列の要素を指定するときに 番目の要素,
番目の要素,
と,
から数え始めます.
例えば,C 言語では配列 の
番目*3の要素を取得するのに
と書きます.配列
に
個の要素があるとき,それぞれの要素は
,
,
,
,
と指定します.
どうして 番目からでなく
番目から数え始めるのか.
歴史上の経緯というところもあります.C 言語が から始まるので後発の言語が真似たというのもあります.しかし,便利だからこの仕様が多くの言語で採用されているというのもまた事実です.
ここにいかに便利か書いていた*4のですが,難しい話になってしまいますし私の力が及ばず簡潔に書くことができなかったので割愛します.興味があれば調べてください.
とりあえず,コンピュータの世界では基本的に から数え始める,ということを伝えたいです.
整数型
コンピュータは と
で値を管理したり表したりしてます.ですが
つ(
桁)だけでは
と
しか表すことができないので使い物になりません.
そこで,いくつかの桁をまとめることで値を表しています.
コンピュータが ビットだよ,
ビットだよ*5というのは,
個の桁ごとにまとめて管理・計算するよ,
個の桁ごとにまとめて管理・計算するよ,という意味です.
ビットでは,
から
まで *6 の値をいっぺんに扱えます.
ビットでは,
から
までの値をいっぺんに扱えます.
ですが,こんなに大きい値を使う必要がないケースもあります.高々 くらいまでの値しか扱わないのに
ビットや
ビットも用いて値を管理するのはもったいないです.そこで,
ビットや
ビットで値を管理する方法も様々なプログラミング言語でサポートされています*7.
ビットでは,
から
までの値をいっぺんに扱えます.
もし から数え始めるなら扱える値の範囲が
から
となりますが,実際は
から数え始めるので範囲は
から
となります.
ここでようやく登場しました .
は
ビットで扱える最大の整数なのです.キリが良い!
ファミコンとか古いゲームのステータスやレベルの上限が だったりするのはこれが理由です.
しかも 桁全ての値が
です.
桁中
桁が
です.
桁中
桁が
である
の次くらいにキリが良いです.(
ビットの話ですが)
は
ビットで扱えない最初(最小)の整数です.ギリギリ扱えないというのはなんとも気持ち悪いものです.
というわけでして,人間の世界の数え方とコンピュータの世界の数え方が ずれているので
よりも
の方がキリが良いのです.
には
のような微妙な気持ち悪さがあります.
しかしながらキリの良さなんて主観なので異論は認めます.実際きら同内部からもさっき異論が飛んできました.
おしまい.