如何使用所有位= 1创建长值

时间:2011-12-20 10:07:46

标签: java

我尝试了以下内容:

public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFF;

但它会导致

The literal 0xFFFFFFFFFFFFFFFF of type int is out of range

8 个答案:

答案 0 :(得分:7)

使用0xFFFFFFFFFFFFFFFFl并且没问题。 另一种方法是简单地使用-1,因为该值也设置了所有位。有关详细信息,请参阅http://en.wikipedia.org/wiki/Two%27s_complement

答案 1 :(得分:7)

如果无法将数字表示为int,则需要指定数字的类型。长是L或l(小写)。我更喜欢大写,因为小写很容易误认为是1(一)。

public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFFL;

或者,您可以将值设置为-1,但在传达“所有位1”的含义时可能不太清楚。

答案 2 :(得分:5)

您可以使用以下任一项:

public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFFL;

public static final long DEVICE_ID_UNKNOWN = ~0L;

public static final long DEVICE_ID_UNKNOWN = -1L;

答案 3 :(得分:3)

获得所有1的另一种方式

public static final long DEVICE_ID_UNKNOWN = ~0L;

答案 4 :(得分:2)

public static final long DEVICE_ID_UNKNOWN = -1L;

答案 5 :(得分:1)

使用public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFFL;来表示它是一个长值,而不是一个int值。

答案 6 :(得分:1)

抱歉,我不是java家伙,但不会-1吗?

答案 7 :(得分:1)

public static final long DEVICE_ID_UNKNOWN = 0xFFFF_FFFF_FFFF_FFFFL;

有用的参考http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html