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