Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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

  1. 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. いいえが2の累乗であるかどうかを調べるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数nが与えられた場合、与えられた数が2の累乗であるかどうかを確認する必要があります。 アプローチ 入力数を2で割り続けます。つまり、=n/2を繰り返します。 各反復で、n%2がゼロ以外になり、nが1でない場合、nは2の累乗ではないことを確認します。 nが1になると、2の累乗になります。 以下の実装を見てみましょう- 例 def isPowerOfTwo(n):    if (n == 0):       retur