Съхранявам флагове, използвайки битове в рамките на 64-битово цяло число.
Искам да знам дали има един бит, зададен независимо от позицията в рамките на 64-битовото цяло число (т.е. не ме интересува позицията на всеки конкретен бит).
boolean isOneSingleBitSet (long integer64)
{
return ....;
}
Мога да преброя броя на битовете с помощта на Bit Twiddling Hacks (от Шон Eron Anderson), но се чудя кой е най-ефективният начин просто да открия дали е зададен един единствен бит...
Намерих някои други свързани въпроси:
- (8051) Проверете дали е зададен един бит
- Откриване на единични еднобитови потоци в рамките на цяло число
както и някои страници в Уикипедия:
NB: моето приложение е на java, но съм любопитен за оптимизации, използващи други езици...
РЕДАКТИРАНЕ: Lưu Vĩnh Phúc посочи, че първата ми връзка във въпроса ми вече е получила отговор: вижте раздела Определяне дали цяло число е степен на 2 в Bit Twiddling Hacks(от Шон Ерон Андерсън). Не разбрах, че един бит е същият като степен на две.