السلام عليكم ورحمة الله وبركاتة
هذه أول مشاركة لي في هذا المنتدي الرئع وأتمني أن تحوز علي إعجابكم
أقدم إليكم دالة قمت ببرمجتها لتحويل رقم ثنائي إلي عشري وسوف أشرحها بإذن الله في وقت لاحق
قد يقول البعض ان هناك دالة موجودة أصلاً في البي إتش بي تقوم بهذه العملية وهي bindec() ...
ولكن هذه الدالة لا تقوم بتحويل الكسور مثل 0.101 لذلك قمت ببرمجة واحدة تفعل ذلك .
كود PHP:
function BinaryToDecimal($binary){
$binary=trim($binary);
if (strstr($binary,'.')){
$split=explode('.',$binary);
$integer=$split[0];
$fraction=$split[1];
$digits=str_split($fraction);
$num=sizeof($digits);
for ($i=1; $i<=$num;$i++){
if ($digits[$i-1]>1){
echo '<script>alert("Enter Binary Digits Only {0,1}\n \n eg: 11001 or 11001.011");history.go(-1)</script> ';
die();
}
$exponent=pow(2,-$i);
$fraction_result+=$digits[$i-1]*$exponent;
}
}else{
$integer=$binary;
}
$splits=str_split($integer);
$num=sizeof($splits)-1;
$i=$num;
foreach($splits as $digits){
if ($digits>1){
echo '<script>alert("Enter Binary Digits Only {0,1}\n \n eg: 11001 or 11001.011");history.go(-1)</script> ';
die();
}
$exponent=pow(2,$i);
$integer_result+=$digits*$exponent;
$i--;
}
if($fraction_result){
$result=$integer_result+$fraction_result;
}else {
$result=$integer_result;
}
return $result ;
}
والله الموفق