CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

符号位——真的就这么一直错下去吗?

已有 3785 次阅读 2013-6-13 06:49 |个人分类:机器计算|系统分类:科研笔记|关键词:学者| 精确计算, 机器数值计算

符号位——真的就这么一直错下去吗?

姜咏江

以前,我一直奇怪为什么西方的机器表示有符号数搞出一个“符号位”,而符号位的0或1又是不能参加机器数值计算的!我还一直怀疑是不是因为误传。昨天写书,认真地探讨了一下Quartu II中Verilog HDL假定的数据位数,验证了下面一段有符号加减法器的设计程序,才确认他们的理论确实有问题。

/ Quartus II Verilog Template

// Signed adder/subtractor

 

module signed_adder_subtractor

(

input signed [WIDTH-1:0] dataa,

input signed [WIDTH-1:0] datab,

input add_sub,    // if this is 0, add; else subtract

input clk,

output reg [WIDTH:0] result

);

 

parameter WIDTH = 16;

 

always @ (posedge clk)

begin

    if (!add_sub)

        result <= dataa + datab;

    else

        result <= dataa - datab;

end

 

endmodule

利用Quartus II仿真时发现,运算结果总会给你加上一个符号位,显然这个符号位不是二进制数的一部分。例如,h0007-h0016,仿真给出的结果是h1FFF1,多出一位!按照“求反加一”的求值方法,应该得到h1FFF1的值是  -hE000F = - 131057,谬之千里矣!实际的结果值应是-15,也就是必须先去掉符号位求值。在机器运算的时候,也是这样做的吗?

由此我可以断言:至我之前,西方的数学界尚未认真地研究过机器记数的一般方法。

机器运算中随意在数值前面添加0或1,会造成识别与实际计算之间的大麻烦,特别是电路设计,会造成相当数量的浪费。我应当为我的限位数理论自豪。看来机器精确计算还大有搞头。

电子电路设计的科学家们,难道我们还要这样一直错下去吗?

2013-6-13

 



https://m.sciencenet.cn/blog-340399-698953.html

上一篇:全面市场化是大科学研究的悲哀
下一篇:科技企业办照仍然很难

0

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-1 22:17

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部