-3
您可以請幫助重新編寫此代碼。我無法理解按位左移實際如何工作。如果有更簡單的方法來表示此代碼,請讓我知道。代表(C)
此代碼用於計算數字的位表示中的1(個)的數量。
int numberofones(int value, int count) {
int numchars = 8 * sizeof(int);
int n;
for(n = 0; n < numchars; n++)
{
if(value & (1 << (numchars - 1 - n))) {
count++;
}
}
return count;
}
否,右移位符號擴展。移位超過位數不確定。 – wildplasser
@yano - 將負值向左移位會導致未定義的行爲;將一個非負值向左移位(只要結果是可表示的)是明確的。 –
啊,哎呀,這是'1'轉移,我正在考慮'numchars' ..沒有足夠接近 – yano