Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zamienianie z systemu bianarnego na dziesiętny, Czysta matematyka, bez używania funkcji bindec()
Raz0r
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 1.02.2009

Ostrzeżenie: (0%)
-----


Program zamieniający liczby binarne na dziesiętne.
Wiem, że istnieje do tego prościutka funkcja "bindec()", ale to jest program na zaliczenie z informatyki i musiałem przedstawic to od strony czysto matematycznej...

Kod
<?php

error_reporting(0); // hehe, lepiej nie wyłączac

$first = $_GET['first'];

if(!empty($first)) {
  if(is_numeric($first)) {

  for($potega=(strlen($first)-1); $potega>=0; $potega--) {

     $pow[$potega] = pow(2,$potega);
     $p[] = $pow[$potega];
    
    }

  for($i=0;$i<strlen($first);$i++){

     $cyfra[$i] = substr($first, $i, 1);
    
    }

  for($x=0;$x<count($cyfra);$x++){

     $f[] = $cyfra[$x];
    
    }

  for($t=0, $u=0; $t<=count($p), $u<=count($f); $t++, $u++) {

     $v[] = ($p[$t]*$f[$u]);

    }

echo "<center><b>Wynik:</b><br />" . array_sum($v) . "</center>";
   }
}

?>


Może się komuś przyda na lekcję infy (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Bo ogólnie to zamienianie w ten sposób jest wysoce niepraktyczne...

Ten post edytował Raz0r 28.03.2009, 11:03:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bounty
post
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 9
Dołączył: 12.04.2009
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


http://forum.codecall.net/classes-code-sni...hp-bin2dec.html
  1. <?php
  2.  
  3. /**
  4.  * Convert a binary number with our without
  5.  * a radix point to its decimal equivalent.
  6.  *
  7.  * @param $binary The binary number to convert.
  8.  * @param $output Show the calculations.
  9.  * @return The decimal conversion
  10.  */
  11. function bin2dec($binary, $output = false) {
  12.    $N = 0;
  13.    $o = "";
  14.    list ( $rhs, $lhs ) = explode ( ".", $binary );
  15.    $rhs = strrev ( $rhs );
  16.    for($i = 0; $i < strlen ( $rhs ); $i ++) {
  17.        $d = $rhs [$i] * pow ( 2, $i );
  18.        $N = $d + $N;
  19.        $o = ($d == 0) ? $o : $o . $d . " + ";
  20.    }
  21.    
  22.    for($i = 0; $i < strlen ( $lhs ); $i ++) {
  23.        $d = $lhs [$i] * pow ( 2, - ($i + 1) );
  24.        $N = $d + $N;
  25.        $o = ($d == 0) ? $o : $o . $d . " + ";
  26.    }
  27.    
  28.    return ($output) ? substr ( $o, 0, - 3 ) . " = " . $N : $N;
  29. }
  30.  
  31. ?>

Przyklad
  1. <?php
  2. echo bin2dec ("110"); //6
  3. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 15:54