次の関数:
int numOnesInBinary(int number) {
int numOnes = 0;
while (number != 0) {
if ((number & 1) == 1) {
numOnes++;
}
number >>= 1;
}
return numOnes;
}
は正の数に対してのみ機能します。負の数の場合、>> 演算を実行するときに常に左端のビットに 1 を追加するためです。Java では代わりに >>> を使用できますが、C++ ではどうすればよいでしょうか? C++ で符号なし整数を使用できるという本を読みましたが、符号なし整数は負の数を表すことができないため、その方法がわかりません。