__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 long
einen anderen Namen für __int64
den 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