当前位置: 首页 > news >正文

基于IEEE-754浮点数格式的matlab仿真

背景:本人开发有关硬件加速IP,遇到了浮点运算的需求,在开始之前,需要了解浮点数表示的具体形式,当前以单精度32bit为例,进行仿真,后续可以扩展为双精度64bit。

以下为matlab代码,可以直接运行,有任何问题,我们可以相互沟通学习。

(1)32bit中符号位占1bit,阶码位占8bit,尾数位占23bit。

(2)本仿真只仿真了一般情况,对于非规格数,无穷大(小)数,Nan并未涉及


%%==================================
% description:  The simulation about float data about IEEE-754
%
% author     :  yangxiaoyu
%
% version    :  v1.0
%%==================================
%假设输入的数据先进行定点化,frac=23bit
num = 176.0625;
scale = 10^floor(log10(abs(num))); % 确定小数点后的位数
integerPart = floor((num * scale) / scale); % 获取整数部分
decimalPart = num - integerPart; % 获取小数部分
%单精度从-126到127
%定义128长度来作为整数二进制store
int_s=zeros(128,1);
in_b_f=zeros(128,1);
fra_s=zeros(23,1);
%
in_b=dec2bin(integerPart);
in_b=in_b';
ll=length(in_b);
in_b_p=zeros(ll,1);
%翻转一下
j=0;
for j=1:1:llin_b_p(ll+1-j,1) = bin2dec(in_b(j,1));
end
q=0;
for q=1:1:128if(q<=ll) in_b_f(q,1) = (in_b_p(q,1));else in_b_f(q,1) = 0;end
endi=0;shift_f=0;E=0;
for i=128:-1:1if(in_b_f(i,1)==1)shift=i;break;end
end
remain_part = zeros(shift-1,1);
for r=1:1:shift-1remain_part(r,1) = in_b_f(r,1);
endshift_f = shift-1;
E=shift_f + 127;
zhi_d_w = 8;
zhi_d = dec2bin(E);zhi_d = zhi_d';
zhi_d_s = zeros(zhi_d_w,1);
for n=1:1:zhi_d_wzhi_d_s(n,1) = bin2dec(zhi_d(zhi_d_w+1-n,1));
end
%
fra_d=decimalPart*2^23;
fra_d_b = dec2bin(fra_d);fra_d_b= fra_d_b';
fra_d_l= length(fra_d_b);
ll_f=23;
fra_f = zeros(ll_f,1);
for c=1:1:ll_fif(c<=fra_d_l)fra_f(c,1) = bin2dec(fra_d_b(fra_d_l+1-c,1));elsefra_f(c,1) = 0;end
end
%output
ff_o = zeros(32,1);
for o=32:-1:1if(num>=0) ff_o(32,1)=0;else ff_o(32,1)=1;endif (o<=31 && o>=24)ff_o(o,1) = zhi_d_s(o-23,1);endif(o>=1 && o<=23)if (o<=23 && (o>=23-(shift-1)+1))ff_o(o,1) = remain_part(o-(23-(shift-1)),1);elseff_o(o,1) = fra_f(o+shift-1,1);endend
end%方便同rtl对应
ff_o_f = zeros(32,1);
for qq=1:1:32ff_o_f(qq,1) = ff_o(33-qq,1);
end

也希望用到的同学,如果有问题及时反馈给我,感谢感谢。

注:其中shift_f就是小数点左移的位数。

经过简单测试,基本的对应关系正确。

http://www.dtcms.com/a/343328.html

相关文章:

  • Day24 目录遍历、双向链表、栈
  • Mac电脑 3D建模工具--犀牛Rhino
  • 【个人网络整理】NOIP / 省选 /NOI 知识点汇总
  • 视频孪生技术在城市政务数字化转型中的应用与价值探索
  • ES_映射
  • Nacos-10--认识Nacos中的Raft协议(Nacos强一致性的实现原理)
  • VirtualBox 安装 Ubuntu Server 系统及 Ubuntu 初始配置
  • 区块链联邦学习思路一
  • 14、软件实现与测试
  • 实践题:智能健康监测系统设计方案
  • centos下安装Nginx(搭建高可用集群)
  • 亚马逊产品排名提升策略:从传统运营到AI驱动的智能化突破
  • 《信任链:幽灵签名》
  • 近端策略优化 (PPO) 算法深度解析
  • 智能求职推荐系统
  • mfc140u.dll文件是什么?解决mfc140u.dll文件丢失的有效解决方法分享
  • 密码管理中明文密码与空密码的危害与预防
  • 民国悬爱网剧《春迟》腾讯独播,石雨晴担纲联合出品人与联合制片人
  • Redis 主从复制(重点理解流程和原理)
  • Windows下服务封装
  • mac电脑使用(windows转Mac用户)
  • Java多线程编程——基础篇
  • STM32输入捕获相位差测量技术详解(基于TIM1复位模式)
  • Nacos 深度指南:从入门到高可用集群部署
  • ES6 面试题及详细答案 80题 (01-05)-- 基础语法与变量声明
  • C++宏的高级用法与元编程技巧
  • 数据结构青铜到王者第一话---数据结构基本常识(2)
  • 指数续创新高,期权的几种应对之策
  • 在线《相关性分析》
  • rs-fMRI_一篇文章中分析方法的梳理(翻译)