/ / क्या कोई इस समारोह को समझा सकता है? [डुप्लिकेट] - PHP, bitwise-ऑपरेटरों

क्या कोई इस समारोह को समझा सकता है? [डुप्लिकेट] - PHP, bitwise-ऑपरेटरों

यह पता लगाने के लिए एक सरल कार्यक्रम है कि एक पूर्णांक 4 की शक्ति है, लेकिन जब हम पूर्णांक 255 और 256 लेते हैं तो मैं इस खंड को समझ नहीं सकता:

 $x = $n;
while ($x % 4 == 0) {
$x /= 4;
}

if($x == 1)

क्या कोई मुझे यह समझा सकता है?

<?php
function is_Power_of_four($n)
{
$x = $n;
while ($x % 4 == 0) {
$x /= 4;
}

if($x == 1)
{
return "$n is power of 4";
}
else
{
return "$n is not power of 4";
}

}
print_r(is_Power_of_four(4)."n");
print_r(is_Power_of_four(255)."n");
print_r(is_Power_of_four(256)."n");
?>

उत्तर:

उत्तर № 1 के लिए 1

यह सी जैसी पुरानी भाषाओं में मूर्खतापूर्ण है।

एक संख्या x 1 से अधिक जो कि दो की शक्ति है, में द्विआधारी प्रतिनिधित्व होगा 1 0 ... कहा पे ... शून्य की कोई संख्या है।

एक संख्या से कम जो कि दो की शक्ति है (x - 1, कहें) बाइनरी प्रतिनिधित्व होगा 1 ... कहा पे ... किसी की संख्या है। इसके अलावा इसमें एक कम द्विआधारी अंक होगा x। यह भी स्पष्ट है कि 2 की शक्ति से एक का एक घटाव उस मूल संख्या में सभी बिट्स को फ़्लिप करता है: किसी अन्य नंबर में यह संपत्ति नहीं है।

& bitwise और ऑपरेटर है। संदर्भ http://php.net/manual/en/language.operators.bitwise.php

इसलिये x & (x - 1) 0 होगा और केवल अगर होगा x 2 की सटीक शक्ति है।