求一個數在二進制中1的個數and判斷一個數是否是2的冪

5 二進制爲101 返回2
-1二進制全爲1(負數採用補碼錶示) 返回32

這裏利用和判斷一個數是否是2的冪的方法一致,利用n&(n-1)每次會去除掉最低位的1

求二進制中1的個數

int getNumOfOne(int n) {
	int sum = 0;
	while (n) {
		sum++;
		n &= (n - 1);
	}
	return sum;
}

判斷是否是2的冪

bool isTwoPower(int n) {
	if (n < 0)
		return false;
	if (n & n - 1)
		return false;
	return true;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章