Thanks to all those that replied. Especially Torben. (What have you been up
to?)
Miguel's solution works great.
Check out the example below:
<?php
function isOneBitSet($n)
{
$x = log($n)/log(2);
return ($x == intval($x));
}
for ($i = 0; $i < 32769; ++$i) {
if(isOneBitSet($i)) {
print("$i, ");
}
}
?>
Prints out:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768,
Just what I wanted.
Thanks again,
Charlie
> > 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