gfortran の乱数ジェネレーターのシードのサンプル コードを見て、ここの時間変換に戸惑いました。
call date_and_time(values=dt)
tms = (dt(1) - 1970) * 365_8 * 24 * 60 * 60 * 1000 &
+ dt(2) * 31_8 * 24 * 60 * 60 * 1000 &
+ dt(3) * 24 * 60 * 60 * 60 * 1000 &
+ dt(5) * 60 * 60 * 1000 &
+ dt(6) * 60 * 1000 + dt(7) * 1000 &
+ dt(8)
t = transfer(tms, t)
365
と31
が_8
末尾にある理由に興味がありました。調べてみると、これは8ビット整数を示していることがわかりました。なぜそれがここで使われるのでしょうか?これは単なるランダム シードであることは理解していますので、それほど重要ではありませんが、なぜ 365 を 8 ビット値に切り捨てたり、mod したりして、他の数値にはしないのでしょうか? ただの気まぐれですか?誰かがこれについて何らかの洞察を持っていますか?
更新: _8 が実際には 8 バイトを意味するのに、8 ビットを意味することについて混乱していたことがわかりました。そうそう。教えてくれてありがとう。