用性能最高的(也是安全的)方式将long的最后一位(最低有效位)(由System.currentTimeInMillis()作为时间戳实际生成)替换为其他位?

还是通过使用按位运算将固定的附件附加到其末端的更好方法?

最佳答案

在您的评论中,您说二进制数字或十进制数字都可以。由于安德鲁发布了十进制版本,因此我发布了要替换2 ls位的二进制版本:

以下程序介绍了4种可能性,您可以用它们替换2个ls位并产生输出:

9999999999999999
9999999999999996
9999999999999997
9999999999999998
9999999999999999


码:

public class A {
public static void main(String[] args) {

    long aLong = 9999999999999999L;
    System.out.println(aLong);

    long aLong2 = aLong & ~3 + 0;
    System.out.println(aLong2);
    aLong2 = aLong & ~3 + 1;
    System.out.println(aLong2);
    aLong2 = aLong & ~3 + 2;
    System.out.println(aLong2);
    aLong2 = aLong & ~3 + 3;
    System.out.println(aLong2);


}
}

08-26 00:20