什么是0x00FFFFFFFFFFFFFFL?

时间:2014-01-02 17:17:15

标签: java

您好我正在尝试了解范围编码器的工作方式,因此我找到了一个用于范围编码器的java程序,然后当我试图对我遇到的值0x00FFFFFFFFFFFFFFL的代码进行逆向工程时,如果任何人能够说明为什么我会很感激我们用这个值?

    public class RangeCoder64
     {

    static final protected long Top=1L<<48;
    static final protected long Bottom=1L<<40;
    static final protected long MaxRange=Bottom;

    protected long Low=0;
    protected long Range=0x00FFFFFFFFFFFFFFL;

     }

3 个答案:

答案 0 :(得分:7)

0x表示值为十六进制。

L表示文字是一个长值。

基本上它只是一个很大的数字。 (十进制值为72057594037927935)

答案 1 :(得分:2)

0x00FFFFFFFFFFFFFFL0x + 00FFFFFFFFFFFFFF + L

0x表示使用了十六进制

对于72,057,594,037,927,935

00FFFFFFFFFFFFFF为十六进制

L表示该值的大小为Long - 较小的数字不需要它(低于需要Long的大小)

如果您看到的值小于2的幂,则右侧将填充1,因此以十六进制右侧将填充F s。通常,它将用作掩码,当and带有值时,掩码只保留低位,在这种情况下,它将丢弃最高字节,并保留7个低字节。

答案 2 :(得分:0)

这将是该范围的价值。它看起来像7个字节。因此,由于某种原因,它限制了数量。