PHP :: Aufgabe #168

5 Lösungen Lösungen öffentlich

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

Lösungen:

vote_ok
von miraja (410 Punkte) - 27.09.2017 um 12:47 Uhr
Quellcode ausblenden PHP-Code
<?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
1 Kommentar
vote_ok
von reso (270 Punkte) - 12.12.2017 um 10:07 Uhr
Quellcode ausblenden PHP-Code
    $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>";  

vote_ok
von habablab (270 Punkte) - 22.02.2018 um 18:12 Uhr
Quellcode ausblenden PHP-Code
<?php

$sInput = "11010";
$iOutput = 0;

$aInput = str_split ( $sInput, 1 );

foreach ($aInput as $row)
{
    $iOutput = $iOutput * 2 + $row;
}

echo ($iOutput);
vote_ok
von Exception (2590 Punkte) - 20.05.2018 um 13:38 Uhr
Quellcode ausblenden PHP-Code
// 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;
}
vote_ok
von syneex (1250 Punkte) - 29.06.2018 um 09:40 Uhr
Quellcode ausblenden HTML-Code
<form method="post">
	<p>Zahl eingeben:</p>
	<input type="text" size="15" name="inhalt">
	<input type="submit" name="btn" value="OK">
</form>


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