[英]How to check if number of lines in a text file is power of 2?
我正在制作一個程序來模擬類似於瘋狂三月錦標賽的情況,其中 64 支球隊將相互對抗。 我已經使用 fstream 從文件中讀取團隊。 我遇到的問題是我必須確保文件中始終至少有一個 2 次方的團隊,否則它將無法正常運行。 我將如何實現一個檢查是否有 2 行電源的功能?
檢查是否在團隊數量中設置了一個位。
bool powerOfTwo = std::popcount(numberOfTeams) == 1;
二進制數的一個技巧是,如果n
是 2 或 0 的冪,則n & (n - 1)
為 0。否則不是。
IE
bool isPowerOfTwo(int n) {
return (n & (n - 1)) == 0;
}
這有效,因為:
例子:
0000 0000 0010 0000 (32)
& 0000 0000 0001 1111 (31)
= 0000 0000 0000 0000 (0) (so 32 is a power of 2)
0000 0000 0110 0100 (100)
& 0000 0000 0110 0011 (99)
= 0000 0000 0110 0000 (96) (so 100 is not a power of 2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.