__umulh

Microsoft 固有の仕様

2 つの 64 ビット符号なし整数の積の上位 64 ビットを返します。

構文

unsigned __int64 __umulh(
   unsigned __int64 a,
   unsigned __int64 b
);

パラメーター

a
[入力] 乗算する最初の数値。

b
[入力] 乗算する 2 番目の数値。

戻り値

乗算で得られる 128 ビットの結果の上位 64 ビット。

必要条件

Intrinsic アーキテクチャ
__umulh x64、ARM64

ヘッダー ファイル<intrin.h>

解説

これらのルーチンは、組み込みとしてのみ使用できます。

// umulh.cpp
// processor: X64
#include <cstdio>
#include <intrin.h>

int main()
{
    unsigned __int64 i = 0x10;
    unsigned __int64 j = 0xFEDCBA9876543210;
    unsigned __int64 k = i * j; // k has the low 64 bits
                                // of the product.
    unsigned __int64 result;
    result = __umulh(i, j); // result has the high 64 bits
                            // of the product.
    printf_s("0x%016I64x * 0x%016I64x = 0x%016I64x_%016I64x \n", i, j, result, k);
    return 0;
}
0x0000000000000010 * 0xfedcba9876543210 = 0x000000000000000f_edcba98765432100

Microsoft 固有の仕様はここまで

関連項目

コンパイラの組み込み