Tom: Logische Ausdrücke (für Spezis)

Beitrag lesen

Hello,

Hab aber das nächste Problem:

<?php
$temp = 10110100;

echo $temp;
echo "<br>";
$left = $temp << 1;
echo $left;
?>

Also ich möchte 10110110 um 1 Bit nach links verschieben, aber als Ausgabe erhalte ich
20220200

Sorry, aber jetzt habe ich laut gelacht. Das Problem hatte ich auch mal irgendwann... ;-)

Wenn Du in PHP eine Zuweisung:  $temp = 10110100; machst, dann hast Du der variablen temp die Deziamalzahl Zehnmillioneneinhundertzehntaussendeinhundert zugewiesen. Wenn Du die um ein bit nach links verschiebst, dann multiplizierst Du die Zahl mit zwei. Das Ergebnis wurde Dir dann auch wieder dezimal angezeigt.

Das liegt natürlich daran, dass Dezimalzahlen im Computer als Strings angezeigt werden. Dieser String wird dann, sofern er ohne Häkchen eingegeben wurde, als Dezimalzahl umgewandelt. Diese Dezimalzahl wird dann aber intern als Bitmuter gespeichert. Erst mit dieser Binärzahl wird dann "gerechnet".

Du musst Dir also immer im klaren sein, wie DU die Zahl siehst, wie der Parser sie sieht und sie dann an den Compiler weiterleitet.

Harzliche Grüße aus <http://

www.annerschbarrich.de>

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau