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
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


  1. <?php
  2. $a='001011';$d=0;$i=0;
  3. while(($z=substr($a,--$i,1)) != null){$d+=($z=='1')?pow(2,-$i-1):0;};
  4. echo $d;
  5.  
  6. // lub mniej czytelny kod ale trochu szybciej ;)
  7.  
  8. $a='001011';$d=0;$i=0;
  9. while(($z=substr($a,--$i,1)) != null){$d|=$z<<-$i-1;};
  10. echo '<br />'.$d.'<br />';
  11. ?>


Ten post edytował zegarek84 28.03.2009, 11:01:11
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: 12.10.2025 - 01:32