GA(google analytics)を見ると、268435455、2147483647はこれらの数字でビット操作を行います。JavaScriptでコード内に大きな数字を直接使用するのはなぜですか?
AirBnBはまた、これらの数字とビット演算子を使用:3266489909、2246822507、3864292196.
例)
function n(e, t) {
return (65535 & e) * t + (((e >>> 16) * t & 65535) << 16) & 4294967295
}
function r(e) {
for (var t = e.length, r = 3432918353, o = 461845907, i = 0, u = void 0, a = t & -4, c = 0; c < a; c += 4) u = e.charCodeAt(c) | e.charCodeAt(c + 1) << 8 | e.charCodeAt(c + 2) << 16 | e.charCodeAt(c + 3) << 24, u = n(u, r), u = u << 15 | u >>> 17, u = n(u, o), i ^= u, i = i << 13 | i >>> 19, i = 5 * i + 3864292196 | 0;
switch (u = 0, t % 4) {
case 3:
u = e.charCodeAt(a + 2) << 16;
case 2:
u |= e.charCodeAt(a + 1) << 8;
case 1:
u |= e.charCodeAt(a), u = n(u, r), u = u << 15 | u >>> 17, u = n(u, o), i ^= u
}
return i ^= t, i ^= i >>> 16, i = n(i, 2246822507), i ^= i >>> 13, i = n(i, 3266489909), i ^= i >>> 16, i >>> 0
}
それは、このように動作しますなぜ私が疑問に思って。
'268435455..toString(2)===「1111111111111111111111111111'' – Ryan
100101を...長い進数のバイナリコードが意味するのでしょうか。? – Integral
'268435455 ===(1 << 28) - 1'。マジックナンバーはビット操作では一般に受け入れられます。 – 4castle