Cでの2の累乗
数nがあるとします。数が2の累乗であるかどうかを確認する必要があります。したがって、n =16の場合、出力はtrueになり、n =12の場合、falseになります。
これを解決するために、論理演算を使用します。 2の累乗の数値を見ると、その数値の2進表現ではMSbが1になり、他のすべてのビットは0になります。したがって、[n AND(n – 1)]を実行すると、次のようになります。 nが2の累乗の場合は0。バイナリでn=16 =10000、バイナリで(n – 1)=15 =01111の場合、10000 AND 01111 =00000 =0
例(C)
理解を深めるために、次の実装を見てみましょう-
#include <stdio.h> #include <math.h> #define MAX 20 bool isPowerOfTwo(int n){ return(n>0 && !(n & (n-1))); } int main() { printf("%s\n", isPowerOfTwo(16) ? "true" : "false"); printf("%s\n", isPowerOfTwo(12) ? "true" : "false"); printf("%s\n", isPowerOfTwo(1) ? "true" : "false"); printf("%s\n", isPowerOfTwo(32) ? "true" : "false"); printf("\n"); }
入力
16 12 1 32
出力
true false true true
-
Cプログラムの3Dでの2つの平面間の角度?
ここでは、3次元空間内の2つの平面間の角度を計算する方法を説明します。平面はP1とP2です。以下のような円周率の方程式- 角度が「A」の場合、このルールに従います- 例 #include <iostream> #include <cmath> using namespace std; class Plane{ private: double a, b, c, d; public: Plane(double a = 0, do
-
いいえが2の累乗であるかどうかを調べるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数nが与えられた場合、与えられた数が2の累乗であるかどうかを確認する必要があります。 アプローチ 入力数を2で割り続けます。つまり、=n/2を繰り返します。 各反復で、n%2がゼロ以外になり、nが1でない場合、nは2の累乗ではないことを確認します。 nが1になると、2の累乗になります。 以下の実装を見てみましょう- 例 def isPowerOfTwo(n): if (n == 0): retur