負の数が考慮されない場合、この分析では、入力値が1未満の場合、この数値は間違いなく2の整数能力ではないことがわかります。
入力値が1より大きい場合、ルールを見つけることができます。 2の整数の出力は、次のようにバイナリで表されます。
2d = 10b; 4d = 100b; 8d = 1000b
バイナリの最初のビットは1で、残りはゼロです。
したがって、入力値がバイナリに変換されると、最初のビットは1であり、もう1つは0であるため、入力値は2の整数能力であると判断できます。
ただし、これを行うことは面倒すぎます。最後にバイナリ番号の「1」の位置のみを判断し、文字列lastIndexof()を使用することができます。方法。
また、このルールは、入力1が入力されている場合にも適用されることもわかります。
その後、簡潔なコードが生まれました。
public static boolean ispoweroftwo(int n){string str = integer.tobinarystring(n); if(n <1)return false; else(str.lastindexof( "1")== 0)return true; elsereturn false; }2の整数電力がエディターが共有するコンテンツ全体であるかどうかを判断する上記のJavaメソッド。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。