UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE
之所以起作用,是因为当您按位与1进行操作时,它允许按原样传递同一位数字;当您按位与0进行操作时,它将阻止该位,结果为0。现在,二进制中的Long.MAX_Value为
0111111111111111111111111111111111111111111111111111111111111111
这是0,然后是63 1s(总共是64位,在Java中很长)
因此,当您按位&数字X与该数字相同时,您将得到相同的数字X,但最左边的位现在变为零。这意味着您仅更改了该数字的符号,而没有更改该值。



