long中使用的位数-Java

cod*_*ver 2 java bit-manipulation

我想知道Java中long数据类型中实际使用的位数。例如:

long time = System.currentTimeMillis();
System.out.println(java.lang.Long.toHexString(time));
Run Code Online (Sandbox Code Playgroud)

输出:
12c95165393

在这里您可以看到它只有11个十六进制数字,这意味着仅使用了64位中的44位。10位仍未使用。有没有一种方法可以在运行时知道使用了多少位或填充剩余位?

Pet*_*iuk 5

试试Long.numberOfLeadingZeros():

long time = System.currentTimeMillis(); System.out.println(Long.numberOfLeadingZeros(time));

对于使用的位: Long.SIZE - Long.numberOfLeadingZeros(time)