_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