Преобразуване на десетична в двоична бройна система -проблем

amgcompany

Registered
Здравейте,
Написах един код който преобразува от едната бройна система в другата, но проблема ми е, че при изкарването на двоичния резултат излизат много нули преди първата единица,мисля че проблема ми идва от начина по който създавам масива.Ето го и кода:
PHP:
if(isset($_POST['num']))
					{
						$num = $_POST['number2'];
						$ost = array();
						$i = 0;
						$j = 0;
						while($num != 0)
						{
							$ost[$i] = $num%2;
							$i++;
							$num = $num/2;
						}
						for($j=$i-1;$j>=0;$j--)
							print $ost[$j];

					}
Ето пример какво става ако напиша "12":
00000.....0000001100
Като е бъкано с нули и числото, което ме интересува стои най-отзад.
 
Всъщност и твоето работи ПОЧТИ коректно.
$num = floor($num/2); и ще получиш това, което искаш.

Иначе, преди време писах подобна функция на C++, ето ти я и за PHP :
PHP:
<?php
function dec2bin($decimal) {
	$binary = null;
	do {
		$binary .= ($decimal % 2 == 1) ? "1" : "0";
		$decimal = floor($decimal / 2);
	} while ($decimal != 0);
	return strrev($binary);
}
echo dec2bin("12"); // return 1100
?>
 

Back
Горе