0

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)

36531_8末尾にある理由に興味がありました。調べてみると、これは8ビット整数を示していることがわかりました。なぜそれがここで使われるのでしょうか?これは単なるランダム シードであることは理解していますので、それほど重要ではありませんが、なぜ 365 を 8 ビット値に切り捨てたり、mod したりして、他の数値にはしないのでしょうか? ただの気まぐれですか?誰かがこれについて何らかの洞察を持っていますか?

更新: _8 が実際には 8 バイトを意味するのに、8 ビットを意味することについて混乱していたことがわかりました。そうそう。教えてくれてありがとう。

4

2 に答える 2

5

8ビットではなく、8バイトです。

もちろん、365 は 8 ビットに収まらず、アラーム ベルが鳴るように設定する必要があります。

于 2014-03-29T08:50:14.577 に答える
0

私の質問の残りの部分に答えるために、これらの製品の 1 つの数値を 8 バイトの整数に設定すると、このページによると、製品も 8 バイトになります。最初の 2 つの項は、ローカルでこれを必要とするのに十分な大きさの唯一のものである可能性が高く、他の項はそれらが合計されるときに変換されます。そのため、365 と 31 だけを 8 バイトにする必要がありました。

于 2014-03-29T09:37:01.683 に答える