Предположим, код задан так:
pattern_mask[pattern[i]] &= ~(1UL << i);
Что это за тип в Java? Как мне реализовать это в Java?
Java не имеет беззнаковых long, но 1L является 64-разрядным литералом со знаком long.
long
1L
-9223372036854775808
9223372036854775807
L
l
int
1
Счетчик сдвига маскируется: только младшие 5 битов для сдвига int и только младшие 6 битов для сдвига long.
Следующий фрагмент показывает, как из-за этого переключение на 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"