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 ...