首页 > 解决方案 > 设置长变量的第 40 位问题

问题描述

我正在玩 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。

标签: java

解决方案


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

这是一个Ideone demo.


推荐阅读