1 バイトに設定されたビット数を数えようとしていますが、答えが見つからない問題が発生しているようです。
私のコードは現在次のようになっています
public static int numBits(byte input){
int count = 0;
while (input != 0){
if ((input & 1)==1){
count++;
}
input >>= 1;
}
return count;
}
私が試すまではうまくいくように見えましたx = -1
。
これにより、値 1 のビットが挿入されるため、無限ループが作成されました。だから私はつまずいた
私の解釈では、これを使用する必要があることを意味していましinput >>>= 1;
たが、これでも無限ループが発生しました。
だから私は試してみて、何が起こっているのかを理解しようとしました
byte x = -1;
System.out.println(x >>> 1);
System.out.println(x >> 1);
につながる
2147483647
-1
私をもっと混乱させます。番号はどこ2147483647
から来たのですか?どこで論理的な間違いを犯している可能性がありますか?