22 Stimmen

C++: Was bedeutet (a<<b)?

Ich habe eine C++ Header-Datei, die die folgenden Definitionen enthält:

#define CACHE_NUM_WAYS    (1<<1)
#define CACHE_DATA_SIZE   (1<<8)

Es wird als Ganzzahl im restlichen Code verwendet.

Was bedeutet das? Und was ist sein Wert?

2voto

Rishi Raj Punkte 59

a< bedeutet _(a * pow(2,b))-> a * 2^b //links-Verschiebeoperator <<_

**

a>>b bedeutet (a / pow(2,b))-> a / 2^b //rechts-Verschiebeoperator >>

**

1voto

Durbar_19 Punkte 11

In CPP steht "<<" für den Linksverschiebungsoperator und ">>" für den Rechtsverschiebungsoperator.

x<>y entspricht dem Teilen von x durch 2^y.

In theoretischen Begriffen verschiebt der Linksverschiebungsoperator die Bits des ersten Operanden nach links, wobei der Operand rechts in diesem Fall die Anzahl der Bits angibt, die nach links verschoben werden sollen, und ebenso verschiebt der Rechtsverschiebungsoperator die Bits des ersten Operanden nach rechts und der Operand rechts gibt die Anzahl der Bits an, die nach rechts verschoben werden sollen.

0voto

Sanjay Sharma Punkte 1

1<<8

Hier ist, wie ich es verstanden habe. Auf die einfachste Weise ausgedrückt bedeutet es, dass die 1 (00000001) im binären Zahlensystem um 8 Stellen (Bits) nach vorne verschoben wird, von wo sie zuvor war. Und für jede Stelle, wie wir wissen, multipliziert sich der Wert (2 im binären System) exponentiell, sodass es zu 1*(2^8) = 256 wird.

Also bedeutet 1<<6 1*(2^6) = 64 und so weiter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X