求一個數的二進位制數中所含1的個數的程式碼實現
#include<stdio.h>
int numberOf1_solution1(int n)/*將一個正數以此向右移一位,與1做與運算,直到這個數為零*/
{
int count = 0;
while (n)
{
if (n&1)
count++;
n=n >> 1;
}
return count;
}
int numberOf1_solution2(int n)/*將1以此向右移動以為,與一個數(正負數均可)做與運算,直到1出現上溢為止*/
{
int count = 0, i = 1;
while (i)
{
if (n&i)
count++;
i = i << 1;
}
return count;
}
int numberOf1_solution3(int n)/*將一個數減去1後再與本身相與,便可減少一個1,利用這個原理求1的個數*/
{
int count = 0;
while (n)
{
n = (n - 1)&n;
count++;
}
return count;
}
int main()
{
printf("%d\n",numberOf1_solution3(5));
return 0;
}
相關文章
- 二進位制中1的個數
- 【劍指offer】二進位制中1的個數
- JZ-011-二進位制中 1 的個數
- 【刷演算法】二進位制中1的個數演算法
- 劍指 Offer 15. 二進位制中1的個數
- 用一個巨集實現求兩個數中的最大數
- 二進位制求5個1的格式。。。。
- offer通過--10二進位制中統計1的個數-2
- 【劍指offer中等部分4】二進位制中1的個數(java)Java
- 三種語言實現計算二進位制中1的個數(C++/Python/Java)C++PythonJava
- 02_Python學習筆記之統計整數二進位制中1的個數Python筆記
- 負數的二進位制數問題
- 根據數字二進位制下 1 的數目排序排序
- 知多一點二進位制中的負數
- 1417 二進位制數的大小
- 負數補碼(16進位制轉10進位制的負數)
- 力扣 根據數字二進位制下1的數目排序力扣排序
- 二進位制數的運算原理與閘電路實現
- leetcode-1356. 根據數字二進位制下 1 的數目排序LeetCode排序
- leetcode.1356. 根據數字二進位制下 1 的數目排序LeetCode排序
- leetcode1356. 根據數字二進位制下 1 的數目排序LeetCode排序
- leetcode 191 位1的個數LeetCode
- 1的個數 【位運算】
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 力扣1356.根據數字二進位制下1的數目排序力扣排序
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- 輸入一個整數,返回這個整數的位數
- 【程式設計師面試金典】 寫出一個程式,接受一個十六進位制的數值字串,輸出該數值的十進位制字串。(多組同時輸入 )程式設計師面試字串
- 輸出二進位制數
- 二進位制中為什麼負數是正數取反再加一
- 【leetcode.191】位1的個數LeetCode
- ZOJ Martian Addition (20進位制的兩個大數相加)
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- LeetCode每日一題: 位1的個數(No.191)LeetCode每日一題
- 面試官:來寫個程式碼求一下兩個數的最大公約數吧面試
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 正則實現個位數補零程式碼例項
- mysql二進位制日誌的引數介紹MySql
- 23行程式碼實現一個帶併發數限制的fetch請求函式行程函式