簡體   English   中英

計算在C ++中為二進制數設置為1的位

[英]Count the bits set in 1 for binary number in C++

在一個二進制數15位的數字1中設置了多少位。

我不知道如何開始這個。 任何幫助/提示?

聞起來像家庭作業,所以我會模糊和神秘。 但是很有幫助,因為這就是我們在SO所做的。

首先,讓我們弄清楚如何檢查第一位。 提示:您希望將變量的所有其他位設置為零,並檢查結果的值。 由於所有其他位都為零,因此變量的值將是第一位(零或一)的值。 更多提示:要將位設置為零,請使用AND操作。

其次,讓我們將第二位移到第一位。 C ++中有一個用於此的操作。

第三,沖洗並重復直至完成。 在你這樣做的時候算一下。

編輯:所以在偽代碼中,假設x是源變量

CountOfOnes=0
while X != 0
    Y = the first bit of X          (Y becomes either 0 or 1)
    CountOfOnes = CountOfOnes + Y
    X = X right shift 1             

特別是對於C ++實現,您需要使X成為無符號變量; 否則,右移操作將對您起作用。

哦,<<和>>運算符完全按位移位。 在C ++中,它們有時在類中被覆蓋以表示其他東西(如I / O),但是當對整數進行操作時,它們會執行位移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM