gpt4 book ai didi

binary - 当两个 16 位有符号数据相乘时,结果的大小应该是多少?

转载 作者:行者123 更新时间:2023-12-04 17:26:54 25 4
gpt4 key购买 nike

我遇到了一个与嵌入式系统和 C/C++ 相关的面试问题。问题是:

If we multiply 2 signed (2's complement) 16-bit data, what should be the size of resultant data?



我已经开始用两个有符号 4 位相乘的例子来尝试它,所以,如果我们乘以 +7-7 ,我们最终得到 -49 ,这需要 7 位。但是,我无法制定一般关系。

我想我需要深入了解二进制乘法才能解决这个问题。

最佳答案

首先,n 位有符号整数包含 -(2^(n-1))..+(2^(n-1))-1 范围内的值。
例如,对于 n=4,范围是 -(2^3)..(2^3)-1 = -8..+7

乘法结果的范围是-8*+7 .. -8*-8 = -56..+64。

+64 大于 2^6-1 - 它是 2^6 = 2^(2n-2) !您需要 2n-1 位来存储这样的 POSITIVE 整数。

除非您正在进行专有编码(请参阅下一段) - 您将需要 2n 位:
1 位为符号,2n-1 位为乘法结果的绝对值。

如果 M 是乘法的结果,则可以存储 -M 或 M-1。这可以为您节省 1 位。

关于binary - 当两个 16 位有符号数据相乘时,结果的大小应该是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com