Я использую примитивный длинный тип данных Java для хранения флага. long имеет 8 байт, поэтому бит 64 бит с битом высокого порядка представляет бит знака, поэтому у нас есть 63 используемых бит в качестве флага. Все работает до тех пор, пока я не включу 32-й бит. Почему это происходит?Установка 32-го бита для Java long type дает -1
Редактировать: В основном я пытаюсь отметить доступность в течение часа для первых 60 бит (1 бит, представляющих минуты в час) для длинного типа данных. Предположим, что время начала: 0: 0: 00. Все работает, если время окончания до 0:30:00, но с 0:31:00 до 60 минут, что означает, когда я пытаюсь (значение & (1 < < 31)) для некоторого значения, инициализированного 0, это будет не возвращает 2^31, а возвращает -1.
Редактировать: объявление маски как 1L, а не 1 проблемы.
Можете ли вы показать, что операция возвращает -1? –