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