1

私はかつて、次のようにして、数値xが2の累乗であるかどうかを判断する方法に遭遇しました。

X&(x-1)の後に0テストが続きます。結果が0の場合、数値に1ビットが1つしかなく、2の累乗であることを意味します。ただし、問題は、符号付きに使用できないことです。 int?符号付き整数の唯一の例外は、1ビットだけである符号付きビットである可能性があるかどうか疑問に思っています。この場合、別のテストを追加してそれで実行できます。または、このメソッドがsignedintに適用されない可能性があるという他の例外がありますか。本当にJavaで使いたいので、もっと充実した形で取り入れられるといいですね。どうもありがとう。

4

1 に答える 1

2

それは問題ではありません; ネガをテストするだけです。正の数の累乗が負になることは決してないので、与えられた負の数は2の累乗ではないと安全に言うことができます。

于 2011-12-13T03:32:22.460 に答える