Try a bitwise and (I think the operator is '&')...
<?php
$bitMask = 16;
$value1 = 24;
$value2 = 36;

?>$value1 has bit 5 set? <?php
if($bitMask & $value1)
{
        //should get here
        echo 'true\r\n';
}
else
{
        echo 'false\r\n';
}

?>$value2 has bit 5 set? <?php
if($bitMask & $value1)
{
        echo 'true\r\n';
}
else
{
        //should get here
        echo 'false\r\n';
}
?>
        - Theo
-----Original Message-----
From: Miguel Cruz [mailto:[EMAIL PROTECTED]]
Sent: Sunday, April 07, 2002 5:04 PM
To: Charlie Killian
Cc: [EMAIL PROTECTED]
Subject: Re: [PHP] Test for one bit set?


On Sun, 7 Apr 2002, Charlie Killian wrote:
> How can I test if a number only has on bit set?
> 
> So testing different numbers will return TRUE or FALSE:
> 
> testing 00010000 would return TRUE.
> testing 00000011 would return FALSE.

Think back to math class when you were 14!

  function isOneBitSet($n)
  {
    $x = log($n)/log(2);
    return ($x == intval($x));
  }

Cheesy alternative:

  function isOneBitSet($n)
  {
    return (1 == substr_count(base_convert($n, 10, 2), '1'));
  }

miguel


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to