Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Specyficzne dla firmy Microsoft
Wykonuje mnożenie, które przepełniają 32-bitową liczbę całkowitą.
Składnia
__int64 __emul(
int a,
int b
);
unsigned __int64 __emulu(
unsigned int a,
unsigned int b
);
Parametry
a
[in] Pierwsza liczba całkowita operand mnożenia.
b
[in] Druga liczba całkowita operand mnożenia.
Wartość zwracana
Wynik mnożenia.
Wymagania
Nieodłączny | Architektura |
---|---|
__emul |
x86, x64 |
__emulu |
x86, x64 |
Plik<nagłówka intrin.h>
Uwagi
__emul
Przyjmuje dwie 32-bitowe wartości ze znakiem i zwraca wynik mnożenia jako 64-bitową wartość całkowitą ze znakiem.
__emulu
Przyjmuje dwie 32-bitowe niepodpisane wartości całkowite i zwraca wynik mnożenia jako 64-bitową niepodpisaną wartość całkowitą.
Przykład
// emul.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(__emul)
#pragma intrinsic(__emulu)
int main()
{
int a = -268435456;
int b = 2;
__int64 result = __emul(a, b);
cout << a << " * " << b << " = " << result << endl;
unsigned int ua = 0xFFFFFFFF; // Dec value: 4294967295
unsigned int ub = 0xF000000; // Dec value: 251658240
unsigned __int64 uresult = __emulu(ua, ub);
cout << ua << " * " << ub << " = " << uresult << endl;
}
Wyjście
-268435456 * 2 = -536870912
4294967295 * 251658240 = 1080863910317260800
END Microsoft Specific