Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi shl und shr (https://www.delphipraxis.net/15690-shl-und-shr.html)

Pseudemys Nelsoni 2. Feb 2004 17:41


shl und shr
 
kann mir jemand ein beispiel geben wie shl und shr funktionieren? ich verstehe die beiden "dinger" nicht. in meinem Buchsteht das sie "bitweise verschieben" also nach links (shl) und rechts (shr)

Matze 2. Feb 2004 17:45

Re: shl und shr
 
Zitat:

Zitat von OH
Die folgenden logischen Operatoren bearbeiten Integer-Operanden bitweise. Wenn z.B. der in X (binär) gespeicherte Wert 001101 und der in Y gespeicherte Wert 100001 lautet, weist die folgende Operation an Z den Wert 101101 zu:

Z := X or Y;

Logische (bitweise) Operatoren
Operator Operation Operandtyp Ergebnistyp Beispiele
not Bitweise Negation integer integer not X
and Bitweises and integer integer X and Y
oder Bitweises or integer integer X or Y
xor Bitweises xor integer integer X xor Y
shl Bitverschiebung nach links integer integer X shl 2
shr Bitverschiebung nach rechts integer integer Y shr I
Für bitweise Operatoren gelten die folgenden Regeln:

Das Ergebnis einer not-Operation hat denselben Typ wie der Operand.
Wenn beide Operanden einer and-, or- oder xor-Operation vom Typ Integer sind, hat das Ergebnis den vordefinierten Integer-Typ mit dem kleinsten Bereich, im dem alle für beide Typen möglichen Werte enthalten sind.
Die Operationen x shl y und x shr y verschieben den Wert von x um y Bits nach links oder rechts (falls es sich bei x um einen vorzeichenlosen Integer handelt). Dies entspricht der Multiplikation oder Division von x durch 2^y. Das Ergebnis hat denselben Typ wie x. Wenn beispielsweise in N der Wert 01101 (dezimal 13) gespeichert ist, liefert N shl 1 den Wert 11010 (dezimal 26) zurück. Beachten Sie, dass der Wert von y als Restwert der Größe von Typ x interpretiert wird. Wenn z.B. x ein Integer ist, wird x shl 40 als x shl 8 interpretiert, da ein Integer 32 Bit hat, und 40 minus 32 den Wert 8 ergibt.

[Edit]Mist, die Formatierung kommt aber net gut rüber :mrgreen:[/Edit]

lordcroc 2. Feb 2004 17:45

Re: shl und shr
 
wenn du sagen wir mal Binär 00000001 hast und ein shl 1 machst bekommst dann Binär 00000010 raus, und das selbe passiert halt bei shr auch, bloss nach rechts

mfg
Lordcroc

Leuselator 2. Feb 2004 17:49

Re: shl und shr
 
Die Antwort findest Du, wenn Du Dir Zahlen, im DualSystem dargestellt, betrachtest:

Code:

            Position/Potenz:  7   6   5   4   3   2   1   0 
                      Basis:  2   2   2   2   2   2   2   2
               Wert dezimal: 128  64  32  16   8   4   2   1

dezimal 55 dual dargestellt:  0   0   1   1   0   1   1   1
  Diese 0 "fällt" links raus__/   /   /   /   /   /   /   /   
                                 /   /   /   /   /   /   /  __ Null kommt von rechts dazu
                                /   /   /   /   /   /   /  / 
das ganze ge-SHL't:           0   1   1   0   1   1   1   0 (= dezimal 110 (= 55  *  2))

dezimal 55 dual dargestellt:  0   0   1   1   0   1   1   1
                                \   \   \   \   \   \   \   \__diese Eins "fällt" rechts raus
   NULL kommt von links dazu__   \   \   \   \   \   \   \
                              \   \   \   \   \   \   \   \
bzw.     ge-SHR't:           0   0   0   1   1   0   1   1 (= dezimal 27 (= 55 div 2))
hoffe, das ist anschaulich genug...
Gruß

hboy 2. Feb 2004 17:51

Re: shl und shr
 
x shr 1 macht x/2 ohne Rest
x shl 1 macht x*2

also
x shr a = x/2^a ohne rest
x shl a = x*2^a

zb. ist 20 binär
00010100

20 shr 2 ist 00000101 also 5 was 20/2^2 entspricht

bei 3 ist das anders

3 shr 2 ist ? 0.
0000011 --> 00000000 die Stellen in Schieberichtung verschwinden

flomei 2. Feb 2004 18:59

Re: shl und shr
 
Heisst das ich könnte Binärcode erzeugen wenn ich den Integer-Wert eines Zeichens nehme und diesen mit shl formatiere? :gruebel:

MfG Florian :hi:

hboy 2. Feb 2004 19:01

Re: shl und shr
 
der binärcode ist nur eine Darstellung einer Zahl. also nein. wenn du deine Zahl als binärstring haben willst musst du sie, ähnlich wie inttohex, konvertieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz