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