次の方法で共有


llMulDiv

llMulDiv 関数は、式 ((a*b)+rnd)/c を実装する。値はすべて 64 ビット値。

タイム スタンプとシーク タイムは 64 ビット値であるため、32 ビット システムでの変換に便利である。たとえば、1 秒あたりのバイトの式は、次のようになる。

(Number of Bytes * Reference Time) / 10,000,000

これは、llMulDiv(nBytes, rtTime, 10000000, 0) として計算する。rnd パラメータは丸め因子として使う。

構文

  LONGLONG WINAPI llMulDiv(
  LONGLONG a,
  LONGLONG b,
  LONGLONG c,
  LONGLONG rnd
);

戻り値

(a * b + rnd)/c 計算、または次の値を返す。

0x7FFFFFFFFFFFFFFF 結果が非常に大きい (正) ため、オーバーフローが発生した。
0x8000000000000000 結果が非常に大きい (負) ため、オーバーフローが発生した。

注意

除算の丸めは、ゼロとする。ゼロの除算は、オーバーフロー状態として扱われる。

参照

その他のヘルパー関数

Int64x32Div32