Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

Binärzahlen erzeugen und ausgeben

Wie man Strings in Binärzahlen umwandelt und Binärzahlen wiederum in Strings

1. Binärzahl zu Dezimalwert

Um eine Binärzahl in ihren Dezimalwert umzuwandeln, wird die Funktion bindec() verwendet. Sie erwartet einen String als Parameter, welcher die Binärzahl enthält und gibt den Dezimalwert als Integer zurück.

PHP-Code
<?php
    $a = bindec('1001');
	var_dump($a);
?>

HTML-Code: Ausgabe
int(9)


2. Dezimalzahl zu Binärzahl

Um die vorherige Operation rückgängig zu machen, also um vom Dezimalwert in den Binärwert umzurechnen, wird decbin() verwendet. Die Funktion erwartet einen Integer und gibt den Binärwert als String zurück. Der String der Binärzahl beginnt immer mit der ersten eins, es gibt also keine führenden Nullen.

PHP-Code
<?php
	$a = decbin(9);
	$b = decbin(16);
	$c = decbin(-16);
	var_dump($a, $b, $c);
?>

HTML-Code: Ausgabe
string(4) "1001"
string(5) "10000"


Die Umwandlung kann auch mit sprintf() durchgeführt werden. An die Funktion muss als erster Parameter der String „%032b” und als zweiter der Dezimalwert als Integer übergeben werden. Im String „%032b” wird die Anzahl der Stellen der sich ergebenden Binärzahl durch die „32” repräsentiert und kann beliebig geändert werden. Es ist auch möglich, nur „%b” zu übergeben. In diesem Fall ist die Anzahl der Stellen dynamisch und das Ergebnis identisch mit decbin(). Ebenfalls ist es möglich, beliebigen weiteren Text in den String einzufügen, welcher dann zum Teil der Ausgabe wird (nur sollte kein Prozentzeichen als Teil des Textes verwendet werden).

PHP-Code
<?php
	$a = sprintf('%b', 9); // Ausgabe wie bei decbin()
	$b = sprintf('%032b', 9); // mindestens 32 Zeichen
	$c = sprintf('%064b', 9); // mindestens 64 Zeichen
	$d = sprintf('Die Binaerzahl ist %b.', 9); // Binaerzahl mit Text
	$e = sprintf('%02b', 1024); // mindestens 2 Zeichen fuer Binaerzahl mit 11 Zeichen - sprintf waehlt die 11
	var_dump($a, $b, $c, $d, $e);
?>

HTML-Code: Ausgabe
string(4) "1001"
string(32) "00000000000000000000000000001001"
string(64) "0000000000000000000000000000000000000000000000000000000000001001"
string(24) "Die Binaerzahl ist 1001."
string(11) "10000000000"


Dem nachfolgenden Beispiel kann eine Funktion entnommen werden, welche eine Dezimalzahl in eine Binärzahl umwandelt und damit den sich ergebenden String automatisch in kleine Blöcke einteilt (zum Beispiel alle 4 Zeichen ein Leerzeichen). Zudem kann als bequemer Parameter die Minimallänge des Strings übergeben werden.

PHP-Code
<?php
	function decbinChunked($dec, $chunksize=4, $minlength=1) {
		$bin = sprintf('%0'.$minlength.'b', $dec);
		
		// ggf Nullen am Anfang auffuellen, sodass Bloecke entsprechend der $chunksize gebildet werden koennen
		$remainder = strlen($bin) % $chunksize;
		$bin = str_repeat('0', ($remainder > 0 ? $chunksize - $remainder : 0)) . $bin;
		
		return chunk_split($bin, $chunksize, ' ');
	}

	// 1 umwandeln, 4 Zeichen je Block, mindestens 32 Zeichen Gesamtlaenge
	echo('1: ' . decbinChunked(1, 4, 32) . "\n");

	// 1 umwandeln, 4 Zeichen je Block, mindestens 64 Zeichen Gesamtlaenge
	echo('1: ' . decbinChunked(1, 4, 64) . "\n");

	// 15 umwandeln, 4 Zeichen je Block, mindestens 1 Zeichen Gesamtlaenge
	echo('15: ' . decbinChunked(15, 4) . "\n");

	// 128 umwandeln, 2 Zeichen je Block, mindestens 1 Zeichen Gesamtlaenge
	echo('128: ' . decbinChunked(128, 2) . "\n");

	// 12517 umwandeln, 10 Zeichen je Block, mindestens 1 Zeichen Gesamtlaenge
	echo('12517: ' . decbinChunked(12517, 10) . "\n");
?>

HTML-Code: Ausgabe
1: 0000 0000 0000 0000 0000 0000 0000 0001 
1: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 
15: 1111 
128: 10 00 00 00 
12517: 0000001100 0011100101