Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Verschiebt eine 128-Bit-Menge, dargestellt als zwei 64-Bit-Mengen LowPart und HighPart, um eine angegebene Anzahl von Bits, die durch Shift definiert wird, nach links und gibt die unteren 64 Bits des Ergebnisses zurück.
Syntax
unsigned __int64 __shiftleft128(
unsigned __int64 LowPart,
unsigned __int64 HighPart,
unsigned char Shift
);
Parameter
LowPart
[in] Die niedrigen 64 Bit der 128-Bit-Menge, die verschoben werden soll.
HighPart
[in] Die hohen 64 Bit der 128-Bit-Menge, die verschoben werden soll.
Shift
[in] Die Anzahl der zu verschiebenden Bits.
Rückgabewert
Die oberen 64 Bits des Ergebnisses.
Anforderungen
| Intrinsic | Aufbau |
|---|---|
__shiftleft128 |
x64 |
Headerdatei<intrin.h>
Hinweise
Der Shift-Wert ist immer Modulo 64, sodass die Funktion beispielsweise bei Aufrufen __shiftleft128(1, 0, 64)die unteren Teilbits 0 nach links verschiebt und einen hohen Teil zurückgibt 0 und nicht 1 wie erwartet.
Beispiel
// shiftleft128.c
// processor: IPF, x64
#include <stdio.h>
#include <intrin.h>
#pragma intrinsic (__shiftleft128, __shiftright128)
int main()
{
unsigned __int64 i = 0x1I64;
unsigned __int64 j = 0x10I64;
unsigned __int64 ResultLowPart;
unsigned __int64 ResultHighPart;
ResultLowPart = i << 1;
ResultHighPart = __shiftleft128(i, j, 1);
// concatenate the low and high parts padded with 0's
// to display correct hexadecimal 128 bit values
printf_s("0x%02I64x%016I64x << 1 = 0x%02I64x%016I64x\n",
j, i, ResultHighPart, ResultLowPart);
ResultHighPart = j >> 1;
ResultLowPart = __shiftright128(i, j, 1);
printf_s("0x%02I64x%016I64x >> 1 = 0x%02I64x%016I64x\n",
j, i, ResultHighPart, ResultLowPart);
}
0x100000000000000001 << 1 = 0x200000000000000002
0x100000000000000001 >> 1 = 0x080000000000000000
Ende Microsoft-spezifisch