なぜ幻想神域のメール保存期間が49709日となってしまったのか

シェアする

Voiced by Amazon Polly

とあるオンラインゲーム(幻想神域)で遊んでいたら、メールの保存期間が49709日となってしまいました。

はて、これはなぜでしょうか。

広告



一見中途半端に見えても、コンピュータにとってはキリがいい

コンピュータが取り扱える数値の上限は、人間が一般的に想像する数値の上限と異なる場合があります。
コンピュータは2進数で数値を表現するため、基本的には2の倍数で上限が決定されるためです(実際にはゼロを含めることが多いため、最大値から-1されます。マイナスを取り扱う場合は半分になります)。
ほとんどの場合、人間にとって都合のいい上限が設定されていても(例えば、パラメータの上限が100や10000であっても)、実装上制限しているだけでコンピュータ内部で数値型としてデータを持っている場合は255、32767のような上限である場合が大半です。

なぜ保存期間が49709日となってしまったのか

とてもざっくりとした仮定ではありますが、一般的にはゲーム内に限らずメールの受信時刻は秒単位で設定されています。
またまたざっくりした仮定ですが、このパラメータが符号なし32ビット整数(unsigned int)だとすると、4,294,967,295秒まで表現することができます。
これを日数に直すと、次のようになります。
4,294,967,295 / 86,400 ≒ 49710.27

最大で、約49710日まで表現ができます。ここでは、おそらく当日を含まない日数を表示するために-1日しているため、最初の画像のように49709日の表示となったと推測されます。
保存期限が切れたものの、マイナスを表現しようとして負のオーバーフローを引き起こした結果このような表示となったものです。