Freigeben über


__ll_rshift

Microsoft-spezifisch

Verschiebt einen 64-Bit-Wert, der durch den ersten Parameter nach rechts angegeben wird, um eine Reihe von Bits, die durch den zweiten Parameter angegeben werden.

Syntax

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Parameter

Maske
[in] Der ganzzahlige 64-Bit-Wert, der nach rechts verschoben werden soll.

nBit
[in] Die Anzahl der zu verschiebenden Bits, Modulo 64 auf x64 und Modulo 32 auf x86.

Rückgabewert

Die maskierte Verschiebung nach nBit Bits.

Anforderungen

Intrinsic Aufbau
__ll_rshift x86, x64

Headerdatei<intrin.h>

Hinweise

Wenn der zweite Parameter größer als 64 auf x64 ist (32 auf x86), wird diese Zahl modulo 64 (32 auf x86) verwendet, um die Anzahl der zu verschiebenden Bits zu bestimmen. Das ll Präfix gibt an, dass es sich um einen Vorgang handelt, bei dem es sich um long longeinen anderen Namen für __int64den 64-Bit-integralen Typ handelt.

Beispiel

// ll_rshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;

#pragma intrinsic(__ll_rshift)

int main()
{
   __int64 Mask = - 0x100;
   int nBit = 4;
   cout << hex << Mask << endl;
   cout << " - " << (- Mask) << endl;
   Mask = __ll_rshift(Mask, nBit);
   cout << hex << Mask << endl;
   cout << " - " << (- Mask) << endl;
}

Output

ffffffffffffff00
- 100
fffffffffffffff0
- 10

Hinweis

Wenn _ull_rshift sie verwendet wurde, wäre der MSB des Werts für die rechte Schicht null gewesen, sodass das gewünschte Ergebnis im Falle eines negativen Werts nicht erzielt worden wäre.

Ende Microsoft-spezifisch

Siehe auch

Systeminterne Compiler
__ll_lshift
__ull_rshift