用C語言程式設計一個二進位制數中1的個數

時間 2023-01-26 18:00:09

1樓:匿名使用者

這個函式可以計數x中1的個數:

int count_bit1(unsigned int x)while (x!=0);

return (n);

}請注意這裡x必須定義為unsigned型,如果寫成有符號型,則當x是負數時》運算因符號擴充套件永遠不完。

2樓:

你那個二進位制數是多少位的啊?

c語言程式設計:統計一個二進位制數其中1的個數???

3樓:匿名使用者

int numof1(int num)

return n;

}//這裡我用的是int型,32位數,如果位數不一樣,自己改吧。

c語言程式設計100例之(26):二進位制數中1的個數

4樓:文庫精選

內容來自使用者:文。

問題描述。如果一個正整數m表示成二進位制,它的位數為n(不包含前導0),稱它為一個n位二進位制數。所有的n位二進位制數中,1的總個數是多少呢?

例如,3位二進位制數總共有4個,分別是4(100)、5(101)、6(110)、7(111),它們中1的個數一共是1+2+2+3=8,所以所有3位二進位制數中,1的總個數為8。

輸入格式。一個整數t,表示輸入資料的組數,接下來有t行,每行包含一個正整數n(1<=n<=20)。

輸出格式。對於每個n,在一行內輸出n位二進位制數中1的總個數。

輸入樣例31

23輸出樣例13

8對於輸入的n,n位二進位制數m是位數為n並且首位為1的二進位制數,且滿足:

2n-1≤n位二進位制數m<2n

因為首位為1,n位二進位制數的個數就是n-1位的0和1的組合數,即2n-1個。

第1位必須為1,所以第1位的1的個數為2n-1個。

其他n-1位,總位數為(n-1)*2n-1。其中0和1的個數是一半對一半,所以1的個數為(n-1)*2n-1/2。

合計1的位數為:2n-1 +(n-1)*2n-1/2。

因此,n位二進位制數中1的個數直接用上式計算出來。計算時,用移位運算來計算2的n次方是一種快速的計算方法。

即n位二進位制數中1的個數為:1<<(n-1)+(n-1)*(1<<(n-2))。

#include

int main()

(for (b=a; (n & 1<

c語言輸入n個二進位制數,輸出其中1的個數。

5樓:回憶在上輩子

定義一個變數。

迴圈輸入的時候如果輸入的為1則進行統計。

最後輸出這個變數就可以了。

**很簡單的。

如果自己不想寫。

支付寶給我個1元紅包我可以教你寫。

c語言 二進位制數轉化為十進位制數

6樓:匿名使用者

思路:十進位制整數轉換為二進位制整數採用"除2取餘,逆序排列"法。即用2整除十進位制整數,可以得到一個商和餘數;再用2去除商,又會得到一個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。

void fun(int n)

int main()

/*執行結果:例如求10的2進位制。

7樓:匿名使用者

很簡單,int i,n;

int num = 0;

scanf("%d",&n);

for(i=0;i

差不多就是這樣吧,自己調一下。

8樓:tclxc天天

#include

void main()

while(a);

printf(\"n%d\\"result);

}程式在下編譯通過可以直接用,你自己看看吧,思路是a%2的結果是二進位制的個位數,(a/2)%2的結果是二進位制的十位數所以p擴大10倍,以後依次類推。

c語言如何將輸入的數表示成二進位制,並統計其中1的個數?

9樓:清水汲芮優

用我們平時十進位制轉換二進位制的演算法,即短除法。

例如:x&(x-1)

當x=5時,5的二進位制是0101

一共計算了兩次,也就是說5的二進位制數一共只有2個1.

下面是**實現:

用c語言找一個二進位制數中「1」的個數,並存入31h單元

10樓:別打李希倫

//返回的函式值就是1的個數。

unsigned int count1number(unsigned int data)

data >>1;

}*(unsigned char *)add = num;

return num;}

c語言 將輸入的數表示成二進位制,並統計其中1的個數

11樓:匿名使用者

#include

int main()

for(j=0;j數。

if(b[j]==1)

k++;printf("%d",k);/1的總數for(j=0;j輸出的二進位制數。

}希望對你有幫助。

12樓:進蔭鬱千山

最直接的方法。

(簡單的int型):

intn,sum;

sum=0;scanf("%d",&n);

for(inti=

0;i<

sizeof(int)*8;++

i)if(n&

1《然你也可以通過2的幾次冪來做,可能效率高些。

如果資料很大,第二種方法應該更有效(比如幾十億,幾百億)

c語言由鍵盤給定一個正整數n,程式設計實現求該整數對應的二進位制數中1的個數。**等!

c語言將十進位制轉化為二進位制,c語言程式設計,如何將十進位制轉化為2進位制

十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元陣列,int ...

c語言十進位制數轉化為二進位制數,C語言 十進位制數轉化為二進位制數

思路 十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 法。即用2整除十進位制整數,可以得到一個商和餘數 再用2去除商,又會得到一個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。include stdi...

怎樣將1840用c語言程式設計轉化為二進位制

以下程式實現一個十進位制數到二進位制數的轉換 該十進位制數可以是正數,小數,負數和整數 源程式如下 include include void main int i 0,j,a 20 b 20 k,c 0 double m,x,d printf 請輸入需要轉換的數 scanf lf x if x 0 ...