C程序:在具有16*16乘法器的处理器上,将两个32位值相乘并返回64位

C程序:在具有16*16乘法器的处理器上,将两个32位值相乘并返回64位,c,embedded,C,Embedded,在最近的一次采访中,我被问及以下编码问题。有人能帮我理解如何用C代码解决这个问题吗 问题 处理器有一个16*16乘法器来表示32位的值。 取两个32位的值,相乘并以64位格式返回。 让我们调用32位数字A和B。现在,让我们将它们分成16位数字,a0/b0和a1/b1 a0是较大的部分 现在,A*B==A0到目前为止你得到了什么?还记得你在学校的数学课吗:你是如何用多个数字乘以数字的?什么是16*16乘法器?@Lundin 16位乘以16位->32bits@Lundin根据小学物理,16位乘以16

在最近的一次采访中,我被问及以下编码问题。有人能帮我理解如何用C代码解决这个问题吗

问题

处理器有一个16*16乘法器来表示32位的值。 取两个32位的值,相乘并以64位格式返回。
让我们调用32位数字A和B。现在,让我们将它们分成16位数字,a0/b0和a1/b1 a0是较大的部分


现在,A*B==A0到目前为止你得到了什么?还记得你在学校的数学课吗:你是如何用多个数字乘以数字的?什么是16*16乘法器?@Lundin 16位乘以16位->32bits@Lundin根据小学物理,16位乘以16位实际上是256平方位。但是很明显,16位是16位数字的缩写答案是C编译器为您生成代码。底层硬件是iAllevant。给定int32_t x,y;然后int64_t z=int64_tx*int64_ty;如果你给出面试中接受的答案,我就不会雇用你。如果问题是编译器将如何生成代码来实现这一点,那将是另一回事——但作为面试官,我不会问这样的问题,如果有人问我,我可能不想为那个雇主工作。