C++ dersleri bit işlemlerinde bir tam sayının 2 'nin kuvvetlerinden olup olmadığını kontrol edebilmek için bitwise operatörlerinden faydalanıyoruz :
int main() { int number = 128; bool isPowerOfTwo = number && !(number & (number - 1)); cout << "result=" << isPowerOfTwo << endl; }
result=1
dikkat edilirse en sağdaki set biti resetleme konusuna, konunun genelinde ihtiyaç duyuluyor. Adım adım inceleyelim neler oluyor :
128 : 1000 0000b en sağdaki set biti clear yaptığımız zaman değerimiz 0 oldu, yani false, başında ! not operatörü var bu da && operatörünün sağ tarafını true yaptı, sol tarafta da number 0 olmaması sebebiyle true döndürüyor, true && true sonucunda true dönmüş oluyor.
127 olsaydı değerimiz :
127 : 0111 1111b olacaktı, en sağdaki set biti clear yapınca : 0111 1110b ye dönüyor değerimiz : bu da true olarak değerlendirilir, başındaki not ! ile false olur, number true da olsa artık çıktımız false olmuştur.
Herkese kolay gelsin!
Önceki konu : Set Bitleri Sayma
Sonraki konu : Bit Clear ve Bit Set