浮点数运算

浮点数的加减法运算

  • 对阶
  • 尾数加减
  • 规格化
  • 舍入
  • 判溢出

例子

设阶码3位,尾数6位,按浮点运算方法,完成下列取值的x+y、x-y?

[x] =

(1) x = 2-011x0.100101,y = 2-010x(-0.011110)

在这里插入图片描述
[y] = 11 110 -0.011110
注意:2-011 转换为是转成补码

  • 对阶

对阶就是用x的阶码减y的阶码,得到的值为负,说明x<y,根据小阶向大阶看齐原理,进行右移,小阶的尾数向右移1位(相当于小数点左移),每右移1位,阶码加1,左移则相反

阶码相加减:x-y 减法就是加法,[y]求[-y] 法则是:包括符号位,取反+1
11 101 + 00 010 = 11 1111 结果是-1的补码
x向右移1位阶码为:11 1110 尾数为0.010010

  • 尾数相加减
x + y
	0 0. 0 1 0 0 1 0
+ 	1 1 .1 0 0 0 1 0
____________________________
	1 1. 1 1 0 1 0 0
x-y y本身是负可以看作 x - (-y) = x + y
	0 0.0 1 0 0 1 0
+	0 0.0 1 1 1 1 0
______________________
	0 0.1 1 0 0 0 0
  • 规格化

      右规格化:浮点加减法运算不允许发出溢出,若阶符出现01、10,则要右规格化,右移1位,阶码+1
      左规格化:符号位和尾数最高位不同时,不需要规格化,相同需要左规格化,尾数左移一位,阶码-1
    
x+y进行左规格化:需要用到01入的方法:11.110100,左移两位尾数左边的两个1丢弃,在尾数右边加2,逢21,尾数为:11.010010,
阶码减2,变为11 100
  • 舍入

      0舍1入法:上面用的就是0舍1入法,丢0补0,丢1补1
      恒置1法:无论丢弃0或1,恒补1
    
  • 判溢出

      	判溢出就是看阶码,01正溢,10负溢,00、11无溢出
    

… 有毛病,评论给出


Verilog是一种硬件描述语言,主要用于描述数字电路和系统。它通常用于计和模拟数字电路,而不是用于浮点数运算。在Verilog中,浮点数运算并不是直接支持的,因为Verilog主要用于处理整数和逻辑运算。 如果需要进行浮点数运算,可以使用其他编程语言,如C或Python,来实现。这些语言提供了丰富的浮点数运算库和函数,可以方便地进行浮点数运算。 在Verilog中,如果需要进行类似浮点数的运算,可以使用固定点数表示法来近似实现。固定点数表示法是一种将浮点数转换为整数进行运算的方法。通过将小数部分乘以一个固定的倍数,并将结果转换为整数,可以实现近似的浮点数运算。 以下是一个使用固定点数表示法进行加法运算的Verilog代码示例: ```verilog module fixed_point_addition ( input [7:0] a, input [7:0] b, output [7:0] sum ); reg [15:0] a_fixed; reg [15:0] b_fixed; reg [15:0] sum_fixed; // 将小数部分乘以256,转换为整数 assign a_fixed = a * 256; assign b_fixed = b * 256; // 进行整数加法运算 always @* begin sum_fixed = a_fixed + b_fixed; end // 将结果除以256,恢复为浮点数 assign sum = sum_fixed / 256; endmodule ``` 请注意,这只是一个简单的示例,用于说明如何使用固定点数表示法进行近似的浮点数运算。实际上,浮点数运算涉及更复杂的算法和技术,需要使用更高级的工具和库来实现。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值