有符号数据计算问题求教
时间:10-02
整理:3721RD
点击:
我想做一个32组16BIT 有符号数据累加的计算, 想请教一下结果需要多少位呢?
根据真OO无双的结论,我这结果需要47位,但我总觉得有些问题。请教下大侠问题出在哪里呢?
m bit + m bit => (m+1) bit m bit + n bit => (m+1) bit,其中n < m
根据真OO无双的结论,我这结果需要47位,但我总觉得有些问题。请教下大侠问题出在哪里呢?
m bit + m bit => (m+1) bit m bit + n bit => (m+1) bit,其中n < m
- m bit與n bit都必須先做signed extension到(m+1) bit才能相加
- 若結果有到(m+2) bit則忽略之,實際的結果為(m+1) bit
16个1‘b1相加只需要5bit表示结果。
32个15bit相加需要几位?(16bit有符号数只有15bit是有效数据)
外加一个符号位就是你结果的位数。
相加跟有符号数和无符号数没有什么关系。32组16bit,两两相加,得16组17bit,再两两相加得8组18bit,推之,4组19bit,2组20bit,结果21bit。其实相同位数相加,需要的最大位宽=原始位数+N(其中2的N次>=相加得个数)
楼上正解,考虑的是防止溢出需要的最大位数。公式是M=N+log2(n),M是最终需要的位数,N为相加的2进制数的位数,n为累加数据的个数。
但是如果是使用补码,如果最终结果不溢出,中间结果的溢出不会影响结果的正确性。也就是不用扩展位数。
