少数を2進数に変換する

 0.4は二進数で表現すると循環小数になるという話を読んで「へえ!」と思ったので試してみました。

<?php

	function fewbinary($num){

		$result = "";

		$integer = floor($num);
		$few = $num - $integer;

		while(1){
			if($num & 1){
				$result = "1".$result;
			}else{
				$result = "0".$result;
			}
			$num = $num >> 1;
			if($num == 0)break;
		}

		$result = $result.".";
		$position = 0.5;

		for($i=0;$i < 7;$i++){
			if($few >= $position){
				$result = $result."1";
				$few -= $position;
			}else{
				$result = $result."0";
			}
			$position /= 2;
		}

		return $result;
	}



	echo fewbinary(5.4);
?>