Handbuch zur dynamischen Ablaufverfolgung in Solaris

Bitweise Operatoren

D bietet die folgenden binären Operatoren zur Manipulation einzelner Bits innerhalb von numerischen Operanden. Diese Operatoren haben dieselbe Bedeutung wie in ANSI-C.

Tabelle 2–9 Bitweise Operatoren in D

&

Bitweises UND 

|

Bitweises ODER 

^

Bitweises EXKLUSIV-ODER 

<<

Operand auf linker Seite um die mit dem Operanden auf der rechten Seite angegebene Bitanzahl nach links verschieben 

>>

Operand auf linker Seite um die mit dem Operanden auf der rechten Seite angegebene Bitanzahl nach rechts verschieben 

Der binäre Operator & dient zum Löschen von Bits aus einem ganzzahligen Operanden. Der binäre Operator | dient zum Einsetzen von Bits in einen ganzzahligen Operanden. Der binäre Operator ^ gibt an jeder Bitposition eine 1 zurück, an der exakt eines der entsprechenden Operand-Bits gesetzt ist.

Mit den Schiebeoperatoren lassen sich Bits innerhalb eines gegebenen Integer-Operanden nach links oder rechts verschieben. Durch eine Linksverschiebung werden leere Bitpositionen auf der rechten Seite des Ergebnisses mit Nullen gefüllt. Durch eine Rechtsverschiebung mit vorzeichenlosem Integer-Operanden werden leere Bitpositionen auf der linken Seite des Ergebnisses mit Nullen gefüllt. Bei einer Rechtsverschiebung mit vorzeichenbehaftetem Integer-Operanden werden leere Bitpositionen auf der linken Seite mit dem Wert des Vorzeichenbits gefüllt. Dies wird auch als arithmetische Verschiebung bezeichnet.

Die Verschiebung eines ganzzahligen Werts um eine negative Bitanzahl oder eine Bitanzahl, die größer ist als die Anzahl der Bits im linken Operanden selbst, ergibt ein unbestimmtes Resultat. Wenn diese Bedingung beim Kompilieren des D-Programms vom D-Compiler erkannt wird, generiert dieser eine Fehlermeldung.

Zusätzlich zu den binären logischen Operatoren steht der unäre ~-Operator für bitweise Negierungen eines einzelnen Operanden zur Verfügung: Er konvertiert jedes Nullbit im Operanden in ein 1-Bit und jedes 1-Bit im Operanden in ein Nullbit.