計算乙個數中1的個數 0的個數

2022-07-03 07:03:11 字數 545 閱讀 6475

1. 求乙個int數二進位制中1的個數

(1)與1、右移   【正數、負數都可以(計算的是負數補碼中1的個數)】

inta;cin>>a;

int count = 0

;int n = sizeof(int)*8; //

位數for(int i=0;i)

a >>= 1

; //右移一位

}cout

<(2)右移相當於除以2

判斷最低位可用2取餘;右移可用除以2   【此方法只適合於正數、無符號數】

inta;cin>>a;

int count = 0

;while(a>0

) cout

<(3)與上比其小1的數  【正數、負數都可以】

inta;cin>>a;

int count = 0

;while(a!=0

) cout

<2. 求0的個數

(1)與1、右移

如果與1為0,則計數加1;如果與1為1,判斷下一位

(2)總的位數減1的個數

C語言計算乙個數中1的個數

計算乙個無符號整型數中1的個數有兩種方法 第一種很容易想到,將數迴圈右移1位直到數為零,每次與1相與,結果為真表示該位為1。用unsigned型別是為了保證數在右移時,無論該程式在什麼機器上執行,左邊空出的位都用0而不是符號位填補。int bitcount unsigned x 第二種方法比較巧妙利...

求乙個數中1的個數

碰到遇到乙個有趣的題,求乙個數二進位制的表示中1的個數,該題有兩種解法,一種是使用短除法將該數直接轉化為二進位制數,另一種比較巧妙的演算法是使用與運算,原理如下圖所示 依照此種思入有如下演算法 int numberof1 solution3 int i return count 依照短處法的思路 有...

求乙個數的階乘中0的個數

連續幾天產出為負,再不寫點東西沒法交代了。public class the number of 0 in factorialn 階乘中有多少0,如果n k 10 m k是乙個不能被10整除的數,那麼m有多少個就有多少個0 n!進行質因數分解n!2 x 3 y 5 z 由於只有2 5 10,所以可以看...