设置长变量第40位的问题

时间:2019-02-09 17:11:42

标签: java

我正在使用Java进行位操作,并且在设置Long变量的第40位时遇到问题。当我这样做时,它只是回圈到第8位。因此,对我而言,这意味着它是32位(而不是64位)。但是,我的理解是Long / long在Java中为2 ^ 64。我可能在这里错过了一些东西。

这是我一直在用的测试代码 code.sololearn.com

   Long k = 256L; 
   Long x = Long.valueOf((1 << 40));

   System.out.println(x);

上面的代码返回256。

1 个答案:

答案 0 :(得分:2)

1 << 40是一个int表达式(并将有效地导致1 << 8,其结果为256)。尝试使用1L << 40

这里是Ideone demo