Referenz - SHR
Syntax A: Ergebnis = Zahl1 SHR Zahl2
Syntax B: Zahl1 SHR= Zahl2
Typ: Operator
Kategorie: Mathematik
SHR verschiebt alle Bits in der Variablen um eine bestimmte Stellenzahl nach rechts.
- 'Zahl1' und 'Zahl2' sind INTEGER-Werte. Wird SHR mit Gleitkommazahlen (SINGLE oder DOUBLE) verwendet, so werden diese zuerst mithilfe von CINT mathematisch gerundet.
- Beim kombinierten SHR (Syntax B) wird der Wert von 'Zahl1' um 'Zahl2' Stellen nach rechts verschoben; es ist die Kurzform für Zahl1 = Zahl1 SHR Zahl2
- Bits, die über die letzte Stelle hinaus verschoben werden, gehen verloren.
SHR ist für einen INTEGER gleichwertig mit der Division durch eine Zweierpotenz; der Exponent dabei ist 'Zahl2'.
Ergebnis = Zahl1 SHR Zahl2
entspricht also
Ergebnis = Zahl1 \ (2 ^ Zahl2)
SHR wird dabei aber schneller durchgeführt als der oben genannte Ausdruck, selbst wenn (2^Zahl2) durch seinen Wert als Konstante ersetzt wird. SHR wird daher zur Optimierung des Codes verwendet.
SHR ist die Gegenfunktion zu SHL. Sie kann mithilfe von OPERATOR überladen werden.
Beispiel:
DIM AS INTEGER a, b, c
DIM AS SINGLE d, e, f
a = 12
b = 2
c = a SHR b
PRINT BIN(a, 8); " wird um "; b; " Stellen nach rechts verschoben. Das Ergebnis ist "; BIN(c, 8); "."
c SHR= 1
PRINT "Um eine weitere Stelle nach rechts verschoben ergibt sich "; BIN(c, 8); "."
d = 11.5
e = 2.4
f = d SHR e
PRINT BIN(d, 8); " wird um "; e; " Stellen nach rechts verschoben. Das Ergebnis ist "; BIN(f, 8); "."
f SHR= 1
PRINT "Um eine weitere Stelle nach rechts verschoben ergibt sich "; BIN(f, 8); "."
SLEEP
Ausgabe:
00001100 wird um 2 Stellen nach rechts verschoben. Das Ergebnis ist 00000011.
Um eine weitere Stelle nach rechts verschoben ergibt sich 00000001.
00001100 wird um 2.4 Stellen nach rechts verschoben. Das Ergebnis ist 00000011.
Um eine weitere Stelle nach rechts verschoben ergibt sich 00000001.
Bei der Verschiebung von &h00000011 um eine Stelle nach rechts geht das letzte Bit verloren; deswegen ist das Ergebnis &h00000001. Die Variable 'd' wird hier zu 12 auf-, die Variable 'e' zu 2 abgerundet. Deshalb ergeben sich auch für die SINGLE-Zeilen dieselben Werte.
Dieser Code bietet sich zum Experimentieren an; ändern Sie einfach die Zahlenwerte für a, b, c, d, e und f.
Unterschiede zu QB: neu in FreeBASIC
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht SHR nicht zur Verfügung und kann nur über __SHR aufgerufen werden.
Siehe auch:
SHL, MOD, mathematische Funktionen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|