MetaTrader 5 herunterladen

Bitorganisierte Operationen

1-Komplement

1-Komplement der Variable.  Ausdruckswert hat 1 in allen Stellen, wo die Variable 0 hat und o in allen Stellen, wo die Variable 1 hat.

b = ~n;

Beispiel:

   char a='a',b;
   b=~a;
   Print("a = ",a, "  b = ",b);  
// Ergebnis wird derartig sein:
// a = 97   b = -98

 
Verschiebung nach rechts

Binaerdarstellung x wird nach rechts um y Stellen verschoben. Wenn der verschobene Wert den zeichenlosen Typ hat, wird die logische Verschiebung nach rechts durchgeführt, d.h. die sich links befreiende Stellen werden mit Nullen ausgefuellt werden.

Wenn aber der verschobene Ausdruck einen Zeichentyp hat, wird arithmetische Verschiebung nach rechts durchgeführt, d.h. die sich links befreiende Stellen werden von Zeichebits ausgefuellt ( wenn die Zahl positiv ist, wird der Wert von Zeichenwert 0 sein, wenn die Zahl negativ ist, wird der Wert von Zeichenbit 1 sein).

x = x >> y;

Beispiel:

   char a='a',b='b';
   Print("Before:  a = ",a, "  b = ",b); 
//--- verschieben wir nach rechts   
   b=a >> 1;
   Print("After:   a = ",a, "  b = ",b); 
// Ergebnis wird derartig sein:
// Before:  a = 97   b= 98
// After:   a = 97   b= 48

 
Verschiebung nach links

Binaerdarstellung x wird nach links um y Stellen verschoben; sich befreiende Stellen werden von Nullen ausgefuellt.

x = x << y;

Beispiel:

   char a='a',b='b';
   Print("Before:  a = ",a, "  b = ",b); 
//--- verschieben wir nach links   
   b=a << 1;
   Print("After:   a = ",a, "  b = ",b); 
// Ergebnis wird derartig sein:
// Before:  a = 97   b = 98
// After:   a = 97   b = -62

Es ist nicht empfehlenswert, um mehrere oder gleiche Anzahl der Bits zu verschieben, als die Laenge der verschiebten Variable, denn das Ergebnis der Operation ist unbestimmt.

Bitorganisierte Operation UND

Bitorganisierte Operation UND der Binaerdarstellungen x und y. Der Ausdruckswert hat 1 (RICHTIG) in allen Stellen, in denen x und y keine 0 haben; und 0 (FALSCH) - in allen anderen Stellen.

b = ((x & y) != 0);

Beispiel:

   char a='a',b='b';
//--- Operation UND
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// Ergebnis wird derartig sein:
// a = 97   b = 98
// a & b = 96

 

Bitorganisierte Operation ODER

Bitorganisierte Operation ODER der Binaerdarstellungen x und y. Ausdruckswert hat  1 in allen Stellen ,wo x oder y keine 0 hat, und 0 - in allen anderen Stellen.

b = x | y;

Beispiel:

   char a='a',b='b';
//--- Operation ODER
   char c=a|b;
   Print("a = " ,a,"  b = ",b);
   Print("a | b = ",c);
// Ergebnis wird derartig sein:
// a = 97   b = 98
// a | b = 99

 

Bitorganisierte Operation ausschliessendes ODER

Bitorganisierte Operation ausschliessendes ODER (eXclusive OR) der Binaerdarstellungen x und y. Der Ausdruckswert hat  1 in den Stellen, in denen x und y verschiedene Binaerwerte haben, und 0 - in allen anderen Stellen.

b = x ^ y;

Beispiel:

   char a='a', b='b';
//--- Operation ausschliessendes ODER 
   char c=a^b;
   Print("a = ",a,"  b = ",b);
   Print("a ^ b = ",c);
// Ergebnis wird derartig sein: 
// a = 97   b = 98
// a ^ b = 3

Bitorganisierte Operationenwerden nur mit Ganzzahlen durchgeführt.

Sehen Sie auch

Prioritaeten und Operationsordnung