Как да умножа 2 32-битови цели числа, за да произведа 64-битово цяло число?

Как да взема вход от 2 32-битови цели числа без знак, да ги умножа и да получа изхода като 64-битово цяло число в C? Всяка помощ се оценява! Благодаря.


person Amritha    schedule 27.02.2012    source източник
comment
en.wikipedia.org/wiki/Multiplication_algorithm   -  person pmg    schedule 27.02.2012
comment
@Suma Не, това не е дубликат на тази публикация... прочетете публикацията, която сте свързали.   -  person Lundin    schedule 27.02.2012
comment
Наистина не са еднакви. Премахнах автоматичния коментар, за да предотвратя по-нататъшно объркване.   -  person BoltClock    schedule 27.02.2012


Отговори (2)


Първо преобразувайте двете цели числа в 64 бита, след това направете нормално умножение и върнете стойността.

person Dervall    schedule 27.02.2012

Просто преобразувайте едно от двете цели числа в uint64_t:

 uint32_t a, b;
 uint64_t c;
 /* assign to a and b */

 c = (uint64_t) a * b;
person ouah    schedule 27.02.2012