Ответ 1
0L
- это целочисленное значение long
со всеми битами, установленными в ноль, - что обычно определение 0
. ~
означает инвертировать все биты, что оставляет вас с целым числом long
со всеми битами, установленными в единицу.
В двухрядной арифметике (которая почти универсальна) знаковое значение со всеми битами, установленными в единицу, равно -1
.
Причиной использования ~0L
вместо -1L
является более четкое представление о намерении - оно не предназначено для использования как число вообще, а скорее как набор бит.