在 Random.java 中,不是 x&((1L<<48)-1)==x 吗?

Ada*_*dam 1 java random bitwise-and

int next(int bits)http://developer.classpath.org/doc/java/util/Random-source.html查看。它包含行

seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
Run Code Online (Sandbox Code Playgroud)

号码(1L<<48)-11111111111111111111111111111111111111111111111111111111111111111。用数字和它做任何事情吗?这是签名多头的怪癖吗?这是旧的过时代码吗?

Joh*_*ica 7

它不是 64 个:

1111111111111111111111111111111111111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

这是 48 个:

0000000000000000111111111111111111111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

与这个数字进行与清除最左边的 16 位。