Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Section spécifique à Microsoft
Décale une quantité de 128 bits, représentée par deux quantités de 64 bits LowPart et HighPart, vers la gauche d'un nombre de bits spécifié par Shift et retourne les 64 bits de poids fort du résultat.
Syntaxe
unsigned __int64 __shiftleft128(
unsigned __int64 LowPart,
unsigned __int64 HighPart,
unsigned char Shift
);
Paramètres
LowPart
[in] Les 64 bits faibles de la quantité 128 bits à déplacer.
HighPart
[in] Les 64 bits élevés de la quantité 128 bits à déplacer.
Maj
[in] Nombre de bits à déplacer.
Valeur retournée
64 bits de poids fort du résultat.
Spécifications
| Intrinsic | Architecture |
|---|---|
__shiftleft128 |
x64 |
Fichier<d’en-tête intrin.h>
Notes
La valeur Shift est toujours modulo 64 de sorte que, par exemple, si vous appelez __shiftleft128(1, 0, 64), la fonction déplace les bits de partie 0 basse vers la gauche et retourne une partie élevée d’et 0 non 1 pas comme prévu.
Exemple
// 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
FIN de la section spécifique à Microsoft