2 つの 32 ビット整数をパラメーターとして使用し、これらのパラメーターの乗算を別の 2 つの 32 ビット整数 (上位 32 ビット部分と下位 32 ビット部分) に分割して返すアルゴリズムが必要です。
私は試してみます:
uint32_t p1, p2; // globals to hold the result
void mult(uint32_t x, uint32_t y){
uint64_t r = (x * y);
p1 = r >> 32;
p2 = r & 0xFFFFFFFF;
}
動作しますが1、マシンに64ビット整数が存在することは保証されておらず、コンパイラによるそれらの使用も保証されていません。
それで、それを解決する最善の方法は何ですか?
注1 : 私のコンパイラは 64 ビット整数をサポートしていないため、実際には機能しませんでした。
Obs : の使用は避けboost
てください。