Ankündigung

Einklappen
Keine Ankündigung bisher.

Dezimal zu Binär und umgekehrt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dezimal zu Binär und umgekehrt

    Hallo Leute, ich hab ein kleines Problem und zwar sollten wir in der Schule einen Dezimal zu Binär (und umgekehrt) Rechner mit PHP programmieren, lief auch soweit. Ich hab nur ein kleines Problem und zwar am Anfang des Script wird immer sofort der "else" Wert ausgegeben (Fehlermeldung) , ich weiß auch warum, weiß allerdings nicht wie ich es beheben soll
    PHP-Code:
    <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
        <h1>Umrechner</h1>
        Dezimalzahl eingeben <input type="text" name="DATA_decimal" value="<?php if(isset($_POST['BUTTON_convert_decimal'])) {echo $_POST["DATA_decimal"] ;} ?>"><button name="BUTTON_convert_decimal">Convert to BIN</button><br>
        Binärzahl eingeben <input type="text" name="DATA_binary" value="<?php if(isset($_POST['BUTTON_convert_binary'])) {echo $_POST["DATA_binary"] ;} ?>"><button name="BUTTON_convert_binary">Convert to DEC</button><br>
        <?php if(isset($_POST['BUTTON_convert_decimal']) && dec_to_bin($_POST["DATA_decimal"])!=false) {echo "Dezimal in Binär: " $_POST["DATA_decimal"] . " = " dec_to_bin($_POST["DATA_decimal"])  ; } else{ echo "<h2>Please type only numbers in!</h2>";} ?>
        <?php if(isset($_POST['BUTTON_convert_binary']) && bin_to_dec($_POST["DATA_binary"])!=false){ echo "Binär in Dezimal: " $_POST["DATA_binary"] . " = " bin_to_dec($_POST["DATA_binary"])  ; } else { echo "<h2>Please type a binary number in!</h2>";} ?>

    </form>
    <?php

        
    //Umrechnen von Dezimal in Binär
        //Input: die Dezimal zahl
        //Output: Binäre Zahl
        
    function dec_to_bin($dezimal)
        {

            
    //schauen ob nur Zahlen vorhanden sind und ob es groesser als 0 ist
            
    if (!is_numeric($dezimal) || $dezimal 0)
            {
                return 
    false;
            }

            
    $binary = array();
            
    // Solange dividieren bis $dezimal 0 ergibt
            
    while($dezimal 0)
            {

                
    // Array mit dem "Rest" auffüllen
                
    array_push($binary$dezimal 2);
                
    // rundet ab (ganze Zahl)
                
    $dezimal floor($dezimal 2);

            }
            
    // Array umdrehen
            
    $binary array_reverse($binary);

            
    // Ausgabe der Dezimalzahl in Binär

            
    for($i=0;$i<count($binary);$i++)
            {
                 
    $binary[$i];
            }
            
    $string implode('',$binary);


         return 
    $string;
        }

        
    //Umrechnen von Binär in Dezimal
        //Input: die Binäre Zahl
        //Output: Dezimalzahl
    function bin_to_dec($binary)
        {
            
    $decimal 0;
             
    //dreht den string um
            
    $binary strrev($binary);

            
    //schauen ob nur 1 und 0 enthalten ist
                
    if (!preg_match('/^[0-1]*$/'$binary))
                {
                    return 
    false;
                }

                
    // Eine Schleife um zu schauen wie lang der string ist.
                
    for($i=0$i<strlen($binary); $i++)
                {
                
    // 1 oder. 0 aus der Variable herausnehmen
                    
    $binary_2 substr($binary$i1);
                
    // Potenz wird multipliziert
                    
    $decimal += $binary_2 * (pow(2$i));
                }
            
    // Rückgabe des Werts
            
    return $decimal;
        }

    ?>
    Hoffe mir kein einer Helfen, denn ich Sitz auf der Leitung
    MfG Junkyy

  • #2
    Zitat von Junkyy Beitrag anzeigen
    ich weiß auch warum
    Warum denn?

    Und warum ist für dich alles <=0 keine Dezimalzahl?
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Zitat von tkausl Beitrag anzeigen
      Warum denn?

      Und warum ist für dich alles <=0 keine Dezimalzahl?
      Meiner Meinung nach weil der Button noch gar nicht gedrückt wurde.

      Wie soll ich eine minus Zahl in Binär anzeigen?

      Kommentar


      • #4
        2er Komplement wuerde ich sagen.
        http://de.wikipedia.org/wiki/Zweierkomplement

        Kommentar


        • #5
          Zitat von Junkyy Beitrag anzeigen
          Meiner Meinung nach weil der Button noch gar nicht gedrückt wurde.
          Dann prüf das doch.

          Zitat von Junkyy Beitrag anzeigen
          Wie soll ich eine minus Zahl in Binär anzeigen?
          Zweierkomplement. Aber selbst wenn du nur vorzeichenlose Zahlen umrechnen willst ist die 0 trotzdem eine gültige. In der Mathematik hat die 0 vieleicht kein vorzeichen, oder aber es gibt +0 und -0, in Binär allerdings zählt die 0 zu den positiven Zahlen, weil das Vorzeichenbit nicht gesetzt ist. (Und somit ist die kleinste Zahl im Minusbereich immer eins höher als die größte im Positiven bereich, beispielsweise -128 bis +127)
          [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

          Kommentar


          • #6
            War dies eine Forderung der Schule, die in PHP vorhandenen Funktionen decbin und bindec nochmal zu erfinden?

            Wenn ja, dann kannst du diese zu Vergleichszwecken nutzen.

            Kommentar


            • #7
              Zitat von jspit Beitrag anzeigen
              War dies eine Forderung der Schule, die in PHP vorhandenen Funktionen decbin und bindec nochmal zu erfinden?

              Wenn ja, dann kannst du diese zu Vergleichszwecken nutzen.
              Ja, war ja Ziel der Aufgabe
              Richtig umrechnen tut das Skript ja

              Kommentar


              • #8
                PHP-Code:
                echo sprintf('%b'4711); 
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Zitat von Junkyy Beitrag anzeigen
                  Richtig umrechnen tut das Skript ja
                  Aber wohl nur positive Werte...

                  Kommentar


                  • #10
                    Zur Logik: Du suchst wohl grob so was:

                    PHP-Code:
                    if (isset($_POST['BUTTON_convert_decimal'])) {
                        
                    $res dec_to_bin($_POST["DATA_decimal"]);

                        if (
                    $res !== false) {
                            echo 
                    "Dezimal in Binär: " $_POST["DATA_decimal"] . " = " $res;
                        } else {
                            echo 
                    "<h2>Please type only numbers in!</h2>";
                        }

                    Negative Werte: Ist vielleicht auch Definitionssache, ob man die aufnimmt. Eigentlich ergibt das ja nur Sinn, wenn man so ein Integer-Format mit fester Länge (8 bit, 16 bit, …, 64 bit etwa) annimmt. Es könnte eine Folgeaufgabe sein, so was optional einzubauen.

                    Kommentar

                    Lädt...
                    X