Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Dziesiętna na binarną.
patwoj98
post 6.06.2014, 15:43:12
Post #1





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

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


Witam.
Programuję dziś skrypt, który ma wpisaną liczbę zmienić z dziesiętnej na binarną. Podobno proste zadanie. Jednak utknąłem.
Poniżej daje skrypt:
  1. <?php
  2. echo "</br>";
  3. while($oblicz>1){
  4. $reszta=$oblicz%2;
  5. echo "$reszta";
  6. }
  7.  
  8.  
  9. ?>


Czego w nim brakuje, aby dobrze działał ? Zmienna jest tutaj liczbą, którą użytkownik wpisuje. Skrypt się nie ładuje na stronie. Trwa minutowe ładowanie i w końcu wyskakuje przekroczenie czasu oczekiwania.
Go to the top of the page
+Quote Post
Pyton_000
post 6.06.2014, 15:48:50
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie dziękuj: http://www.php.net/manual/en/function.decbin.php
Go to the top of the page
+Quote Post
patwoj98
post 6.06.2014, 15:50:04
Post #3





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

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


Z tego korzystałem, ale potrzebuję zrobić wersję z algorytmem. Ewentualnie można mi rozpisać algo na to: )
Go to the top of the page
+Quote Post
PrinceOfPersia
post 6.06.2014, 17:00:00
Post #4





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


  1. $zmienna = 100; // WEJSCIE
  2.  
  3. // dokonujac przesuniecia bitowego w petli w prawo, liczymy ile bitow ma liczba (np. reprezentacja 5 bedzie miala 3 bity, bo 5 dziesietnie= 101 binarnie)
  4. for ($ileBitow=0, $a = $zmienna; $a; $a>>=1)
  5. $ileBitow++;
  6.  
  7. $s = ''; // WYJSCIE
  8.  
  9. // DLA ($bit = jedynka przesunieta bitowo w lewo o $ileBitow-1; powtarzaj dopoki $bit ; po kazdej iteracji przesun $bit w prawo)
  10. for ($bit = 1<<$ileBitow-1; $bit; $bit>>=1) {
  11. $s .= ($zmienna & $bit)?'1':'0'; // bitowa operacja AND
  12. }
  13.  
  14. echo $s;
  15.  


czyli w skrocie:


  1. $zmienna = 100;
  2.  
  3. for ($ileBitow=0, $a = $zmienna; $a; $a>>=1)
  4. $ileBitow++;
  5.  
  6. $s = '';
  7. for ($bit = 1<<$ileBitow-1; $bit; $bit>>=1) {
  8. $s .= ($zmienna & $bit)?'1':'0';
  9. }
  10. echo $s;
  11.  


smile.gif

Ten post edytował PrinceOfPersia 6.06.2014, 17:01:25


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.06.2025 - 08:46