用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++
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 三種語言實現計算二進位制中1的個數(C++/Python/Java)C++PythonJava
- Go語言實現十進位制轉換成二、八、十六進位制Go
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- JavaScript十進位制轉換為二進位制JavaScript
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 在c語言中輸出8進位制數,16進位制數C語言
- 二進位制中1的個數
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- C語言資料型別、變數的輸入和輸出、進位制轉換C語言資料型別變數
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 輸出二進位制數
- C 如何將輸出的地址轉化為十進位制數
- 牛客網測試題 把十六進位制數字轉換為十進位制數字
- 進位制數轉換方法(八/十六/十)
- Python 十進位制轉換為二進位制 高位補零Python
- Qt進位制轉換(十進位制轉十六進位制)QT
- 設計一個十進位制轉化為隨意進位制的程式
- 十進位制轉換任意進位制--鏈棧實現
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 牛客網 二進位制數(進位制轉換、北郵機試)
- leedcode-數字轉換為十六進位制數
- 羅馬數字轉換成十進位制
- 【劍指offer】二進位制中1的個數
- JZ-011-二進位制中 1 的個數
- C語言進位制轉換與列印C語言
- 第一章:位運算-------輸入浮點數,輸出對應二進位制數
- 二進位制轉十進位制快速方法
- C語言中printf打出2進位制與16進位制數C語言
- 負數補碼(16進位制轉10進位制的負數)
- 二進位制、十進位制與十六進位制相互轉化