Умножение двух 32-битных чисел без использования 64-битного целого
Мы делаем 32-битное * 32-битное умножение, используя следующий алгоритм
Давайте мы хотим умножить (32-битный) на b (32-битный), оба подписаны,
a = ah * 2 ^ 16 + al [ah - старшие 16 бит, al - младшие 16 бит]
b = bh * 2 ^ 16 + bl [bh - старшие 16 бит, bl - младшие 16 бит]
Мы эффективно делаем
Результат = (al * bl) + (((ah * bl) + (al * bh)) * 2 ^ 16) + ((ah * bh) * 2 ^ 32) ~~~
Мой вопрос,
Есть ли лучший способ сделать это?