IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - PHP: Umrechnung von Binär- und Dezimalzahlen



PHP: Umrechnung von Binär- und Dezimalzahlen

In PHP gibt es zur Umrechnung von Binär- und Dezimalzahlen die Funktionen bindec() und decbin(). Wie diese Funktionen wirklich arbeiten wird in diesem Artikel beschrieben.


Autor: ()
Datum: 14-11-2004, 21:17:10
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 20935x
Rating: 8 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Dezimalzahlen => Binärzahlen

Wie bekannt ist, gibt es 2 Varianten Dezimalzahlen in Binärzahlen umzurechnen. Da die erste Möglichkeit mit dem Suchen der Quadratzahlen zu kompliziert ist, wenden wir uns der zweiten Möglichkeit zu.
Die Zahl 25 soll in eine Binärzahl konvertiert werden. Dabei geht man wie folgt vor:
Man teilt die Zahl so oft durch 2, bis man nur noch eine 0 übrig hat. So ergibt aber nun 25 / 2 = 12.5. Für die nächste Division nehmen wir dann einfach die Zahl vor dem Komma. Der Rest wird mit 1 vermerkt.

25 / 2 = 12 - Rest 1
12 / 2 = 6 - Rest 0
6 / 2 = 3 - Rest 0
3 / 2 = 1 - Rest 1
1 / 2 = 0 - Rest 1

Jetzt liest man die Restwerte von (!) unten nach oben (!) und erhält somit 25 = 11001.
Eigentlich recht einfach, also dürfte die Umsetzung in PHP keine Schwierigkeiten bereiten.

Datei dec-bin.php
<?php

// Dezimalzahl festlegen
$dez = $dez_backup = 25;
$bin = array();

// Solange dividieren bis 0 im Zähler steht
while($dez > 0) {

// Array mit Rest auffüllen
array_push($bin, $dez % 2);
// Nur mit Ganzzahl weiterrechnen
$dez = floor($dez / 2);

}

// Array umdrehen
$bin = array_reverse($bin);

// Ausgabe der Binärzahl
echo $dez_backup . " = ";

for(
$i=0;$i<count($bin);$i++) {

echo
current($bin);
next($bin);

}

?>


Binärzahlen => Dezimalzahlen

Binärzahlen in Dezimalzahlen umzurechnen ist noch einfacher als umgekehrt. Man liest die Binärzahl (in diesem Fall 11001) wieder von hinten. Die Nullen und Einsen stellen den Multiplikator für die 2er Potenzen da. Wobei 2^0 1 ergibt. 2 wird mit der fortschreitenden Stelle der Binärzahl potenziert. Hört sich kompliziert an, ist aber in der Praxis wirklich sehr einfach:
11001 wird von hinten gelesen.

1 * 2^0 + 0 * 2^1 + 0 * 2^2 + 1 * 2^3 + 1 * 2^4 =
1 + 0 + 0 + 8 + 16 = 25

Das ganze in PHP zu realisieren ist schon etwas anspruchsvoller aber müsste zu schaffen sein.

Datei bin-dec.php
<?php

// Binärzahl festlegen
$bin = $bin_backup = 11001;
// Zahl umkehren
$bin = strrev($bin);
// Dezimalzahl auf 0 setzen
$dez = 0;

// Schleife für jede 1 bzw. 0 durchlaufen
for($i=0; $i<strlen($bin); $i++) {

// 1 bzw. 0 aus der Zeichenkette isolieren
$bin_tmp = substr($bin, $i, 1);

// Dezimalzahl um den angegebenen Wert vergrößern
$dez += $bin_tmp * (pow(2, $i));

}

// Ausgabe der Dezimalzahl
echo $bin_backup . " = " . $dez;

?>


paedubucher
Professonial
Beitrag vom:
15-11-2004, 18:09:39

Ich bewerte auch nicht

Ich hätte besser eine Funktion in PHP implementiert, wie es funktioniert wurde ja schon beschrieben.

-----------------------------------------------------



Senior Member
Beitrag vom:
15-11-2004, 13:58:28

Theoretisch weiß doch eigentlich jeder, wie man mit der Umrechnung umgeht. Aber die praktische Umsetzung finde ich interessanter...

-----------------------------------------------------


Morraldor
Senior Member
Beitrag vom:
15-11-2004, 12:57:55

Hi, ich habe NICHT bewertet (nur für den Fall, dass da wieder ein Troll vorbeischaut), aber wo ist der praktische Nutzen des Ganzen?

Einen theoretischen Artikel über Binär- und Dezimalzahlen fände ich logischer als das Thema über PHP zu behandeln....

-----------------------------------------------------
Wer dem Leben zu lang zuschaut verpasst es


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04503
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16551
Queueeinträge:06236
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1137
Comments: 0