用c語言實現輸入一個十進位制數,計算其轉換為二進位制數後其中包含1的個數
這個問題有兩個解決方法。第一個就是用我們平時十進位制轉換二進位制的演算法,即短除法。
第二個就是用其本身與上其二進位制數減一,
例如:x&(x-1) 當x=5時, 5的二進位制是0101
0101 & (0101-1) == 0101 & 0100 == 0100
0100 & (0100-1) == 0100 & 0011 == 0000
一共計算了兩次,也就是說5的二進位制數一共只有2個1.
下面是程式碼實現:
#include<stdio.h>
int count_bits(unsigned int value)//定義形參
{
int one = 0;//定義計數器
while(value != 0)
{
if(value % 2 == 1)//短除法計算
{
one ++;
value = value / 2;
}
}
return one;
}
int main()
{
int ret = 0;
ret = count_bits(15);//呼叫函式
printf("%d\n",ret);
return 0;
}
這是第二種演算法:
#include<stdio.h>
int count_bit(unsigned int value)
{
int count = 0;
while(value)
{
count++;
value = value & (value - 1);//value與其二進位制減1,結果再賦給value
}
return count;//返回計數器
}
int main()
{
int ret = 0;
ret = count_bit(5);
printf("%d\n",ret);
return 0;
}
相關文章
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 【c語言】統計一個數二進位制中的1的個數C語言
- JavaScript 二進位制數字轉換為十進位制JavaScript
- 位運算--求一個 數二進位制中1的個數
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 位運算(一):二進位制中1的個數
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 【c語言】將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數C語言
- javascript十進位制數字和二進位制相互轉換JavaScript
- 十六進位制數轉十進位制
- 三種語言實現計算二進位制中1的個數(C++/Python/Java)C++PythonJava
- Go語言實現十進位制轉換成二、八、十六進位制Go
- 在c語言中輸出8進位制數,16進位制數C語言
- 二進位制中1的個數
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 某演算法競賽題——把一個二進位制的串轉換為十進位制整數演算法
- JavaScript十進位制轉換為二進位制JavaScript
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- C語言十進位制,八進位制,十六進位制輸出分析C語言
- 求一個整數的二進位制中1的個數
- 用C#實現二進位制的減法(包括二進位制小數)C#
- 用C#程式碼實現二進位制與十進位制的互相轉換C#
- 求一個數的二進位制數中所含1的個數的程式碼實現
- 數的進位制轉換
- C語言資料型別、變數的輸入和輸出、進位制轉換C語言資料型別變數
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 十六進位制轉換為十進位制
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- 牛客網測試題 把十六進位制數字轉換為十進位制數字
- C 如何將輸出的地址轉化為十進位制數
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 進位制數轉換方法(八/十六/十)
- 羅馬數字轉換成十進位制
- Oracle二進位制與十進位制轉換Oracle
- js將二進位制數字轉換為十進位制程式碼例項JS