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.

unsigned __int64 __shiftleft128( 
   unsigned __int64 LowPart, 
   unsigned __int64 HighPart, 
   unsigned char Shift 
);

Paramètres

  • [in] LowPart
    64 bits de poids faible de la quantité de 128 bits à décaler.

  • [in] HighPart
    64 bits de poids fort de la quantité de 128 bits à décaler.

  • [in] Shift
    Nombre de bits à décaler.

Valeur de retour

64 bits de poids fort du résultat.

Configuration requise

Intrinsèque

Architecture

__shiftleft128

x64

Fichier d'en-tête <intrin.h>

Notes

La valeur Shift est toujours modulo 64 pour que, par exemple, si vous appelez __shiftleft128(1, 0, 64), la fonction décale les 0 bits de la partie inférieure vers la gauche et renvoie une partie élevée de 0 et non 1 comme on pourrait s'y attendre.

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);  
}
  

Voir aussi

Référence

__shiftright128

intrinsèques du compilateur