Partager via


__shiftleft128

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

Voir aussi

__shiftright128
Intrinsèques du compilateur