【发布时间】:2010-05-15 07:19:27
【问题描述】:
假设代码如下:
pattern_mask[pattern[i]] &= ~(1UL << i);
这在 Java 中是什么类型?如何在 Java 中实现这一点?
【问题讨论】:
-
你应该接受一些答案
假设代码如下:
pattern_mask[pattern[i]] &= ~(1UL << i);
这在 Java 中是什么类型?如何在 Java 中实现这一点?
【问题讨论】:
Java 没有无符号 long,但 1L 是 64 位有符号 long 文字。
long,从-9223372036854775808到9223372036854775807,包括L 或 l (ell) 为后缀,则其类型为 long;否则为int 类型。后缀 L 是首选,因为字母 l (ell) 通常很难与数字 1 (one) 区分开来。移位计数被屏蔽:int 移位仅低 5 位,long 移位仅低 6 位。
下面的 sn-p 显示了由于这个原因,在 1 上的移动与在 1L 上的移动是不同的。
System.out.println(1 << 1); // prints "2"
System.out.println(1 << 33); // prints "2"
System.out.println(1L << 33); // prints "8589934592"
System.out.println(1L << 65); // prints "2"
【讨论】: