Проверьте, установлен ли только один бит внутри целого числа (независимо от его позиции)

Я храню флаги, используя биты в 64-битном целом числе.

Я хочу знать, есть ли один бит установлен независимо от позиции в пределах 64-битного целого числа (то есть меня не волнует позиция какого-либо конкретного бита).

boolean isOneSingleBitSet (long integer64)
{
   return ....;
}

Я мог посчитать количество бит, используяБит Тиддлинг Хаки (Шон Эрон Андерсон), но мне интересно, какой самый эффективный способ просто определить, установлен ли один бит ...

Я нашел несколько других связанных вопросов:

(8051) Проверьте, установлен ли один битОбнаружение одиночных однобитовых потоков внутри целого числа

а также некоторые страницы Википедии:

Найти первыйБит манипуляцииВес Хэмминга

NB: мое приложение на Java, но мне любопытно по поводу оптимизации с использованием других языков ...

РЕДАКТИРОВАТЬ: Lưты Vĩнх Phúc указал, что моя первая ссылка в моем вопросе уже получила ответ: см. разделОпределение, является ли целое число степенью 2 вБит Тиддлинг Хаки (Шон Эрон Андерсон). Я не поняла чтоодин бит был такой же каксила двух.

Ответы на вопрос(6)

Ваш ответ на вопрос