PHP :: Aufgabe #168
5 Lösungen

Zahlen umwandeln: Binär zu Dezimal
Anfänger - PHP
von Nachbar
- 13.09.2017 um 14:19 Uhr
Schreibe eine Funktion, die Zahlen aus dem Dualsystem in Zahlen des Dezimalsystems umwandelt.
Beispiel:
Binär: 11010
Dezimal: 26
Beispiel:
Binär: 11010
Dezimal: 26
Lösungen:

<?php function convertToDecimal($binary_value) { $binary_string = strval($binary_value); $binary_length = strlen($binary_string); $sum = 0; //zu der Variable $sum wird für der zugehörige Dezimalwert addiert for ($i = 0; $i < $binary_length; $i++) { $char = substr($binary_string, $i, 1); if ($char === '1') { $exponent = $binary_length - 1 - $i; $sum += pow(2, $exponent); } } $decimal_value = $sum; echo('Der Binärwert ' . $binary_value . ' entspricht dem Dezimalwert ' . $decimal_value); } convertToDecimal(1001001); //Ausgabe: Der Binärwert 1001001 entspricht dem Dezimalwert 73

$bin_zahl = "1000000000000000000"; $bin_zahl_als_array = str_split($bin_zahl); $bin_zahl_als_array = array_reverse($bin_zahl_als_array); for($i=0;$i<strlen($bin_zahl);$i++) { $bin_rechnung = $bin_zahl_als_array[$i]*pow(2,$i); $bin_ergebnis += $bin_rechnung; } echo "<table border=1> <tr> <td>Binärzahl</td><td>$bin_zahl</td> </tr> <tr> <td>Dezimalzahl</td><td>$bin_ergebnis</td> </tr> </table>";

<?php $sInput = "11010"; $iOutput = 0; $aInput = str_split ( $sInput, 1 ); foreach ($aInput as $row) { $iOutput = $iOutput * 2 + $row; } echo ($iOutput);

// die einfachste möglichkeit: das nehmen, was es bereits gibt: echo decbin('42') . ' entspricht ' . bindec('101010') . ', oder in Hexadezimal: ' . strtoupper(dechex('42')) . '<br />'; // oder sollte man die obere lösung warum auch immer nicht nutzen wollen: lösung mit einer eigenen funktion: myDec2Bin('101010'); function myDec2Bin($binZahl) { $result = 0; $numbers = str_split(strrev($binZahl)); // string umdrehen, sodass die stellen der niedrigsten wertigkeit ganz vorn stehen (für index nachher wichtig / macht das leben einfacher) for ($index=0; $index < sizeof($numbers); $index++) { $result += $numbers[$index] * pow(2, $index); // addiere zu result "index * (2^index)" } echo $binZahl.' entspricht '.$result; }

<form method="post"> <p>Zahl eingeben:</p> <input type="text" size="15" name="inhalt"> <input type="submit" name="btn" value="OK"> </form>

<?php $zahl = $_POST['inhalt']; echo "eingegebene Zahl: "; echo $zahl; echo "<br>"; echo "dec: "; echo bindec($zahl); ?>