В С++ скажите, что:
uint64_t i;
uint64_t j;
то i * j
даст uint64_t
, который имеет в качестве значения нижнюю часть умножения между i
и j
, т.е. (i * j) mod 2^64
.
Теперь, что, если бы я хотел высшую часть умножения? Я знаю, что существует инструкция по сборке, чтобы сделать что-то подобное при использовании 32-битных целых чисел, но я вообще не знаком с сборкой, поэтому я надеялся на помощь.
Каков наиболее эффективный способ сделать что-то вроде:
uint64_t k = mulhi(i, j);