Partager via


_umul128

Section spécifique à Microsoft

Multiplie deux entiers non signés 64 bits passés comme les deux premiers arguments, place les 64 bits de poids fort du produit dans l’entier non signé 64 bits vers lequel pointe HighProduct et retourne les 64 bits de poids faible du produit.

Syntaxe

unsigned __int64 _umul128(
   unsigned __int64 Multiplier,
   unsigned __int64 Multiplicand,
   unsigned __int64 *HighProduct
);

Paramètres

Multiplicateur
[in] Premier entier 64 bits à multiplier.

Multiplicande
[in] Deuxième entier 64 bits à multiplier.

HighProduct
[out] Les 64 bits élevés du produit.

Valeur retournée

64 bits de poids faible du produit.

Spécifications

Intrinsic Architecture En-tête
_umul128 x64 <intrin.h>

Exemple

// umul128.c
// processor: x64

#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(_umul128)

int main()
{
    unsigned __int64 a = 0x0fffffffffffffffI64;
    unsigned __int64 b = 0xf0000000I64;
    unsigned __int64 c, d;

    d = _umul128(a, b, &c);

    printf_s("%#I64x * %#I64x = %#I64x%I64x\n", a, b, c, d);
}
0xfffffffffffffff * 0xf0000000 = 0xeffffffffffffff10000000

FIN de la section spécifique à Microsoft

Voir aussi

Intrinsèques du compilateur