我试图找到计算包含M个n位无符号二进制数之和所需的最大位宽的公式。谢谢!
答案 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