って疑問が湧いたので、健闘検討してみました。
ぼくの疑問
A=0の26進数と捉えると辻褄が合わない箇所が出てくる。
A: 0
B: 1
︙
Y: 24
Z: 25
AA: 26?????!!!!!BAじゃないと辻褄合わねえぞ?AAは0じゃねえの?
検討してみた内容
1. A=0の26進数と素直に捉えた場合
A: 0
B: 1
︙
Y: 24
Z: 25
BA: 26
これが一番しっくりくるんだけどなあ…。でもZの次はBAじゃなくAAなんですね…。
2. 1の位だけはA=0でそれ以外はA=1というトリッキーな表記法として捉えてみた
どういうことかというと、
赤枠で囲った位だけはA=1と捉えるというご都合主義的?な解釈。
A: 0
AA: 26*1 + 0
となる。
位によって1はじまりか0はじまりかが変わるというトリッキーなのが難点
3. 0の無いワールドとして捉えてみた
A=1です。
A: 1
︙
Z: 26
AA: 261 + 1 = 27
A0: 261 + 0 = 26※Zと同じ結果になる
4. 0の無いワールドとして捉えた後に-1したパターン
だってA=0で0はじまりじゃないとApachePOIとかで困るじゃん…。
A: 1 - 1 = 0
︙
Z: 26 - 1 = 25
AA: 261 + 1 - 1 = 26
A0: 261 + 0 - 1 = 25※Zと同じ結果になる
結果的には2. 1の位だけはA=0でそれ以外はA=1というトリッキーな表記法として捉えてみたと同じ計算結果になるんですが、
考え方が違うっすね…。
「検討してみた内容」をプログラム組んでみた!
See the Pen エクセル進数検討 by momosetkn (@momosetkn) on CodePen.
結論
エクセル進数(と呼ぶべきなのか?)は
0の無いワールドとして捉える3. 0の無いワールドとして捉えてみたか、
4. 0の無いワールドとして捉えた後に-1したパターンが妥当そうですね。
2. 1の位だけはA=0でそれ以外はA=1というトリッキーな表記法として捉えてみたはエクセル進数になってますがトリッキーですし…。
おまけ(10進数で例えると?)
一,二,三,四,五,六,七,八,九,十しかないワールドとします。
そうすると一十は20ということになります。
一: 1
︙
十: 10
一一 = 10 * 1 + 1 = 11
︙
一十 = 10 * 1 + 10 = 20
となります…。
0無し世界はこういう性質を持っているようです。
- 繰り上がるタイミングが0有り世界よりも1個上にズレている。
- そして、繰り上がったら1の位は1になる
0があったほうが繰り上がるだけなので、計算的には単純ですね。
エクセルってめんどう…