这是我的代码,我需要将时间最后三位设置为零。但我的代码不起作用。
Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
time &= ~0x7;
LogUtil.i("test",String.format("%x %s",~0x7,time));
这是日志
fffffff8 1506830400944
应该是什么
fffffff8 1506830400000!
答案 0 :(得分:4)
您的号码确实正在转换。最后3位数字实际设置为0
。您没有看到它们的原因是它们是以二进制级别转换的。
1506830400944
到二进制的转换是这样的:
10101111011010110000101110011110110110000
^^^
last 3 digits are zero
只需在time
行之前和之后打印time &= ~0x7;
,您就会看到差异。
如果要为十进制表示将最后3位数设置为零,则可以执行以下操作:
time=(time/1000)*1000