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); ?>
