Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - SHR

Referenz-Navigation

 

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.

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 BefehlsreferenzeintragSHL. Sie kann mithilfe von BefehlsreferenzeintragOPERATOR ü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 Befehlsreferenzeintrag-lang qb steht SHR nicht zur Verfügung und kann nur über __SHR aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragSHL, BefehlsreferenzeintragMOD, Befehlsreferenzeintragmathematische Funktionen


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 03.08.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 22.12.2012 von Redakteurnemored gespeichert.
  Versionen Versionen