微創 求整數的二進位制表示中有多少個1

2021-06-03 18:49:59 字數 616 閱讀 9227

現有一整數n,求n用二進位制表示中有多少個1?

解法一的步驟:

(1)判定n是否為0,若為0,計算結束;否則繼續計算

(2)取n mod 2的值,若為1,計數器加1

(3)對n進行除2,並返回到步驟(1)

**如下:

int count1bits(int n)

while (0 != n)

}return count;

}

解法二:先來看這樣乙個現象,任何不等於0的整數轉化為二進位制後至少有乙個1,現假設n不等於0,把n拆成兩部分:n1n2,n2為低位首次出現1的右面部分(包括首次出現1的bit位),n1為剩餘部分。比如n為11011000,則n1為1101,n2為1000,對n2減1為0111,n2 = n2 & (n2 - 1) = 1000 & 0111 = 0000,則n變為11010000。發現按以上方法每操作一次,n就少乙個1,不停迴圈以上的方法,直到n變為0,迴圈了幾次就表示n有多少個1.

**如下:

int count1bits(int n)

while (0 != n)

return count;

}

整數的二進位制表示

目錄總結 整數的二進位制表示,需要區分正整數和負整數來看。看正整數的二進位制表示,就要先了解一下位權。十進位制 二進位制都有位權。以 123 為例 123 1 10 2 2 10 1 3 10 0。每個位置的位權都不一樣,十進位制從右到左,以 1 開始,依次乘 10 也就是說第 1 位為 1 第 2...

LintCode 二進位制表示

給定乙個數將其轉換為二進位制 均用字串表示 如果這個數的小數部分不能在 32 個字元之內來精確地表示,則返回 error 樣例 n 3.72 返回 error n 3.5 返回 11.1 題目很簡單,直接上 吧 public class binaryrepresention return res.r...

LintCode 二進位制表示

給定乙個數將其轉換為二進位制 均用字串表示 如果這個數的小數部分不能在 32 個字元之內來精確地表示,則返回 error 您在真實的面試中是否遇到過這個題?yes 樣例n 3.72 返回 error n 3.5 返回 11.1 好久沒做題 有點懵逼 根據資料試出來的 臥槽 public class ...