Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Khusus Microsoft
Melakukan perkalian yang meluapkan apa yang dapat ditahan bilangan bulat 32-bit.
Sintaks
__int64 __emul(
int a,
int b
);
unsigned __int64 __emulu(
unsigned int a,
unsigned int b
);
Parameter
a
[di] Operan bilangan bulat pertama dari perkalian.
b
[di] Operan bilangan bulat kedua dari perkalian.
Nilai hasil
Hasil perkalian.
Persyaratan
Intrinsik | Sistem |
---|---|
__emul |
x86, x64 |
__emulu |
x86, x64 |
File header<intrin.h>
Keterangan
__emul
mengambil dua nilai bertanda tangan 32-bit dan mengembalikan hasil perkalian sebagai nilai bilangan bulat bertanda 64-bit.
__emulu
mengambil dua nilai bilangan bulat yang tidak ditandatangani 32-bit dan mengembalikan hasil perkalian sebagai nilai bilangan bulat yang tidak ditandatangani 64-bit.
Contoh
// 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;
}
Output
-268435456 * 2 = -536870912
4294967295 * 251658240 = 1080863910317260800
END Khusus Microsoft