PDA

View Full Version : سوال: تبدیل ده دهی به باینری



bravia2009
شنبه 10 مهر 1389, 19:49 عصر
سلام دوستان
من میخوام عدد ده دهی را به باینری تبدیل کنم و نمیدونم چرا کار نمیکنه ؟؟؟؟
این کد تبدیل کسی میدونه چرا کار نمیکنه ؟

$number=$_POST['number'];

for ($i=0;$number>0;$i++){
$result=$number % 2;
$divition=$number / 2 ;
$number=$divition;

echo $result;


}

<body>
<form method="post" action="bianry.php">
<table align="left">
<tr>
<td >Plz enter your number :: <input name="number" type="text" />
</td>
</tr>
<tr>
<td> Plz See your number :: <input name="number" type="text" />
</td>
</tr>
<tr>
<td> <input name="btnconvert" type="submit" value="Convert" />
</td>
</tr>

</table>

</form>
</body>

sama01
شنبه 10 مهر 1389, 20:02 عصر
یک جستجوی ساده برای عبارت php decimal to binary در google، می‌تونست شما رو مستقیما به این صفحه برسونه: decbin (http://php.net/manual/en/function.decbin.php)

funpatogh
شنبه 10 مهر 1389, 20:13 عصر
خوب از این تابع استفاده کنید


<?php
echo decbin(10);
?>

bravia2009
شنبه 10 مهر 1389, 20:38 عصر
دوستان ممنون از لطفتون . ولی خودم میدونم چنین تابعی و جود داره ولی نیاز به اینه که خودم بنویسم. لطفا در صورت دانستن اشکال کد بالا را بفرمایید ! ممنون

funpatogh
شنبه 10 مهر 1389, 21:07 عصر
الگوریتم تبدیل رو بنده نمیدونم و گر نه شاید میتونستم کمکتون کنم

bravia2009
شنبه 10 مهر 1389, 21:10 عصر
الگوریتم تبدیل رو بنده نمیدونم و گر نه شاید میتونستم کمکتون کنم

ببینید الگوریتم بدین صورته مثلا یک عدد مانند 13 را میگیره شروع میکنه تقسیم بر 2
این عدد یک باقی مانده داره که یا 0 یا 1 میشه
بعدش میاد عدد بعدی یعنی خارج قسمت تقسیم قبلی یا همون 13 را تقسیم میکنه میشه عدد 6 و باقی ماندشو دوباره...
این عمل تا زمانی انجام میشود که عدد خارج قسمت صفر شود

snail22
شنبه 10 مهر 1389, 21:39 عصر
$n = 13;
$a = array();

do{

$m = $n % 2;
$n /= 2;
$a[] = $m;

}while($n > 1);

$a[] = (int) $n;

$binary = join('', array_reverse($a));

bravia2009
شنبه 10 مهر 1389, 22:12 عصر
پس خروجیش کجاست ؟

snail22
شنبه 10 مهر 1389, 22:24 عصر
پسر خوب پس متغییر binary چبه!؟
اینم خروجیش


echo $binary;

sama01
شنبه 10 مهر 1389, 23:06 عصر
به جای

$n /= 2;
بنویس

$n = floor($n/2);