ホームページ >バックエンド開発 >PHPの問題 >PHPで2の累乗を求める方法

PHPで2の累乗を求める方法

zbt
zbtオリジナル
2023-08-04 15:47:511398ブラウズ

php メソッドで 2 の累乗を確認します。 1. ビット単位の演算により、2 の累乗であるかどうかが判断されます。ビット単位の演算子 & を使用して、数値のバイナリ表現の 1 つのビットのみが 1 であるかどうかを確認します。 2 の 2 乗である場合、バイナリ表現の 1 つのビットだけが 1 で、他のビットは 0 なので、結果を出力するだけです。 2. 数学関数を使用して、数値が 2 のべき乗であるかどうかを判断します。 log2 関数では、数値が 2 の累乗の場合、その底 2 の対数は整数でなければならず、0 を返し、結果を出力するだけです。

PHPで2の累乗を求める方法

このチュートリアルの動作環境: Windows10 システム、php8.1.3 バージョン、DELL G3 コンピューター。

PHP では、ビット演算子と数学関数を使用して、数値が 2 の累乗かどうかを判断できます。次に、ビット単位の演算子を使用する方法を示します。

function isPowerOfTwo($num) {
// 位运算判断是否为2的幂次方
// 使用位运算符 & 检查数字的二进制表示中是否只有一位是1
// 如果是2的幂次方,那么二进制表示中只有一位是1,其他位都是0
// 例如:4的二进制表示是100,8的二进制表示是1000
return ($num & ($num - 1)) == 0;
}
// 测试例子
$num1 = 4; // 4的二进制表示是100,是2的幂次方
$num2 = 8; // 8的二进制表示是1000,是2的幂次方
$num3 = 6; // 6的二进制表示是110,不是2的幂次方
// 调用函数判断是否是2的幂次方
echo $num1 . "是2的幂次方吗? " . (isPowerOfTwo($num1) ? "是" : "不是") . "\n";
echo $num2 . "是2的幂次方吗? " . (isPowerOfTwo($num2) ? "是" : "不是") . "\n";
echo $num3 . "是2的幂次方吗? " . (isPowerOfTwo($num3) ? "是" : "不是") . "\n";

出力結果:

4是2的幂次方吗? 是
8是2的幂次方吗? 是
6是2的幂次方吗? 不是

ビット単位の演算子を使用するだけでなく、数学関数を使用して、数値が 2 のべき乗であるかどうかを判断することもできます。 log2 関数の使用方法は次のとおりです:

function isPowerOfTwo($num) {
// 使用log2函数判断是否为2的幂次方
// 如果一个数是2的幂次方,那么它的以2为底的对数一定是整数
return (log($num, 2) % 1) == 0;
}
// 测试例子
$num1 = 4; // 4是2的幂次方
$num2 = 8; // 8是2的幂次方
$num3 = 6; // 6不是2的幂次方
// 调用函数判断是否是2的幂次方
echo $num1 . "是2的幂次方吗? " . (isPowerOfTwo($num1) ? "是" : "不是") . "\n";
echo $num2 . "是2的幂次方吗? " . (isPowerOfTwo($num2) ? "是" : "不是") . "\n";
echo $num3 . "是2的幂次方吗? " . (isPowerOfTwo($num3) ? "是" : "不是") . "\n";

出力結果も同じです:

4是2的幂次方吗? 是
8是2的幂次方吗? 是
6是2的幂次方吗? 不是

上記の 2 つの方法では、PHP プログラミング言語を使用して、数値は 2 の 2 乗です。特定のニーズに基づいて、それを実現する適切な方法を選択できます。どの方法を選択しても、数値が 2 の累乗かどうかをすばやく判断するのに役立ちます。 。

以上がPHPで2の累乗を求める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。