यह पता लगाने के लिए एक सरल कार्यक्रम है कि एक पूर्णांक 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 की सटीक शक्ति है।