假设代码是这样的:
pattern_mask[pattern[i]] &= ~(1UL << i);
这在Java中是什么类型的?我如何在Java中实现它?
答案 0 :(得分:3)
Java没有未签名long
,但1L
是64位签名long
字面值。
long
,从-9223372036854775808
到9223372036854775807
,包括long
或L
(ell),则其类型为l
;否则它是int
类型。后缀L
是首选,因为字母l
(ell)通常很难与数字1
(一)区分开来。移位计数被屏蔽:int
移位仅低5位,long
移位仅低6位。
以下代码段显示了由此产生的影响,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"