求一個數的二進位制數中所含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的個數
- 位運算--求一個 數二進位制中1的個數
- 求二進位制數中1的個數(程式設計之美)程式設計
- 二進位制中1的個數
- 位運算(一):二進位制中1的個數
- 【c語言】統計一個數二進位制中的1的個數C語言
- 【劍指offer】二進位制中1的個數
- 【刷演算法】二進位制中1的個數演算法
- 題目1513:二進位制中1的個數
- 用c語言實現輸入一個十進位制數,計算其轉換為二進位制數後其中包含1的個數C語言
- 劍指 Offer 15. 二進位制中1的個數
- JZ-011-二進位制中 1 的個數
- 查詢數N二進位制中1的個數(JS版 和 Java版)JSJava
- 用一個巨集實現求兩個數中的最大數
- 【劍指offer中等部分4】二進位制中1的個數(java)Java
- offer通過--10二進位制中統計1的個數-2
- 二進位制求5個1的格式。。。。
- 【c語言】求兩個數中不同的位的個數C語言
- poj3252 數位dp(所有比n小的二進位制位0的個數不少於1的個數)記憶化搜尋
- 負數的二進位制數問題
- 02_Python學習筆記之統計整數二進位制中1的個數Python筆記
- 根據數字二進位制下 1 的數目排序排序
- 知多一點二進位制中的負數
- 用C#實現二進位制的減法(包括二進位制小數)C#
- 演算法學習記錄九(C++)--->二進位制中1的個數演算法C++
- 【c語言】將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數C語言
- 負數補碼(16進位制轉10進位制的負數)
- 產生一個32位的16進位制隨機數隨機
- 找出沒有相鄰的1的二進位制數的個數---2013年2月17日
- 力扣 根據數字二進位制下1的數目排序力扣排序
- 1417 二進位制數的大小
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 實現整數二進位制指定位置為0或1
- 二進位制數的運算原理與閘電路實現
- 有趣的二進位制3—浮點數
- 某演算法競賽題——把一個二進位制的串轉換為十進位制整數演算法
- 陣列-07. 求一批整數中出現最多的個位數字(20)陣列
- 數的進位制轉換