存储M个n位二进制数的总和的最大位宽

时间:2017-06-14 01:53:21

标签: verilog hardware fpga hdl

我试图找到计算包含M个n位无符号二进制数之和所需的最大位宽的公式。谢谢!

3 个答案:

答案 0 :(得分:2)

所需的最大位宽应为 ceil(log_2(M * (2^n - 1)))

编辑:感谢@MBurnham我现在意识到它应该是floor(log_2(M * (2^n - 1))) + 1

答案 1 :(得分:1)

假设为正整数,则需要floor(log2(x))+ 1位来存储x。并且m个n位数之和可以产生的最大值是m * 2 ^ n。 所以我认为公式应该是

floor(log2(m * 2^n)) + 1

位。

答案 2 :(得分:0)

如果我添加2个数字,我需要比2个数字中的较宽者多1位来存储结果。因此,如果我添加2个n位数字,我需要n + 1位来存储结果。

if I add another n-bit number, I need (n+1)+1         bits to store the result (that's 3 n-bit numbers added so far)
if I add another n-bit number, I need ((n+1)+1)+1     bits to store the result (that's 4 n-bit numbers added so far)
if I add another n-bit number, I need (((n+1)+1)+1)+1 bits to store the result (that's 5 n-bit numbers added so far)

所以,我认为你的公式是

n + M - 1