对FPGA浮点与定点,二进制加减法的一些想法

1111.11111其实每个位的配比是一定的,要是有符号位,那么这个符号位的配比就是 (-1)^s次方,没有符号位,那就去判断剩余的数据每一位的配比就行 ,小数点右侧:从左到右 -1 -2 -3 -4 等等,小数点的左侧: 0 1 2 3 4 。因此,在判断一串定点的数据是什么的时候,需要去判断小数点在什么方位,然后换算成数据是什么。如何利用二进制进行乘除的计算呢?

N位整数位的最高位的比重为 2的(N-1)次方

浮点数:一串数据是分层的,有符号,有指数,有尾数

减去一个数等于加上这个数的补码,得到的结果也是原结果的补码,需要再取补才能得到原结果。

采用补码,可以把减法变加法,得到的结果是补码,然后补码。

在加减的过程中,数据位可以随便拓展,不改变最终的结果,扩展的好处是防止了计算之后数据的溢出。

在乘法当中,需要对符号位进行扩展,然后再进行相乘,结果取扩展之后的位宽,高位为符号位,然后,其余的求补,得到结果。要是正*正 = 无符号相乘,得到的结果是几位就是几位,由于证书的补码数值不变,因此取补和不取补一样,有符号则需要拓展,最后求得的结果要截位,然后取补。

在二进制加减法中,其实,100010这种最高位1为符号位,1后面的数值是负数的绝对值,这种表示在机器中是识别不了的,机器默认的就是100010是补码形式,而这种补码形式,才是 111101 原码的表达式,为什么呢?因为在机器中,数值的计算要符合二进制的的,比如原码10101,按我们的角度是-5,但是5的表示为00101,而-5+5 = 0,10101+00101 不等于0的,因此在机器中的理解中,10101不是-5,而是原码为11011,也就是说10101表示的是负-11,而机器中11011反而表达的是 -5,因为11011+00101 = 0;在表示反码的时候,就无所谓符号了,只是机器中的数值与现实中的负数有一个对应关系,这种关系就是最高位1保持不变,其余位取反加一的关系,同时凡是相加为一的两个数,在机器中表示的就是现实中的互为相反数。因此,凡是在机器中出现的加减法,都可以认为是补码,想要知道机器中的数值对应的是现实中的什么数值,需要自己转换一下,但是转换后的数并不是机器计算中出现的数,想要用现实中的数值进行加减,首先要做的就是要转换成对应的机器表示方式,也就是补码,才能让机器去计算。一定要注意你现在拿到的数值是你要计算还是要机器计算,你计算的话,是要转换成原码形式,你才能够按照你的计算逻辑去计算,要是让机器计算,就需要转换成机器识别的语言,而且要分清这是原码还是补码,补码就是机器识别的,原码就是自己识别的。所以原码和补码的叫法只是针对计算对象是人还是机器。这两个对象的计算方式有一个相互转化换的逻辑,逻辑对应就是相互取补码。

值得注意的是:补码会有符号位的扩展,而符号位的拓展可以表示的是相同的现实中的数值,因为根据 x+(-x) = 0;0000 0101 + (11111011) = 0000 0000 ;5+(-5)= 0;因此 11111011 还是表示的是-5 而减少符号位或者从增加符号位 ,所表示的数值大小也是相同的;或者用nbit表示-3 ,与mbit表示-3,机器表示不同,但是,其实表示的都是-3。因此,由于补码形式可以表达成负数,所以,正数与,依然是加法运算。其实,无所谓原码和补码,只需要分清所给的数据是机器中运算的数据,还是现实中的数据,机器中运算的数据就是补码,自己想知道机器中表示的是现实中的什么数值,就需要转换成补码,同理,现实中的数据,想要转换成机器符合现实中运算的规则,就需要改变负数的表达方式,而改变之后的表达就是下那是中的负数取补码来表示的,这样在机器中计算的表达式才符合x+(-X)=0;也符合二进制加法进位的逻辑。

整体来讲,带有符号位的正数,求在机器中对应负数的表示,则可以讲带有符号的正数整体求补就可以了。比如  0 011101 ,求对应的负数在机器中的表示,就是 1100010+1'b1。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值