我想将最后三位设置为零,但我不知道我的代码在哪里错了?

时间:2017-05-11 08:54:45

标签: java

这是我的代码,我需要将时间最后三位设置为零。但我的代码不起作用。

Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
time &= ~0x7;
LogUtil.i("test",String.format("%x %s",~0x7,time));

这是日志

  

fffffff8 1506830400944

应该是什么

  

fffffff8 1506830400000!

1 个答案:

答案 0 :(得分:4)

您的号码确实正在转换。最后3位数字实际设置为0。您没有看到它们的原因是它们是以二进制级别转换的。

1506830400944到二进制的转换是这样的:

10101111011010110000101110011110110110000
                                      ^^^
                             last 3 digits are zero

只需在time行之前和之后打印time &= ~0x7;,您就会看到差异。

如果要为十进制表示将最后3位数设置为零,则可以执行以下操作:

time=(time/1000)*1000