首页 > 其他分享 >浮点数与定点数相互转换(仅考虑正数情况)

浮点数与定点数相互转换(仅考虑正数情况)

时间:2023-12-11 22:22:39浏览次数:38  
标签:转换 二进制 text 浮点数 表示法 定点数 正数

1. 浮点数转换为定点数

定点数总位宽设为 \(W\) ,小数部分字长设为 \(F\)

那么,考虑一个浮点数 \(a\) ,将其转换为定点数的操作为:

  • 一: 计算 \(b = a \times 2^{F}\) ;

  • 二: 将 \(b\) 化为整数 \(^*\) ;

  • 三: 用二进制将 \(b\) 表示成 \(c\);

  • 四: 用 \(N\) 位二进制数表示 \(c\) 成 \(c = (N-W-1)QF\) 或者 \(c = \text{fix}(1,N,F)\) \(^{**}\)。

    \(^*\)可以是去尾法,四舍五入法,向下取整法等保留整数部分

    \(^{**}\)\(N \ge W\) ,其中,当 \(N > W\) 时,高位的 \(N-W\) 位用零补齐,注意符号位;低 \(F\) 位位小数位;表示方法为定点数典型表示法:XQN表示法fix()表示法

\[\begin{flalign} &\ \text{Step1: } b = a \times2^F \\ &\ \text{Step2: } b = \text{round}(b) \\ &\ \text{Step3: } c = \text{dec2bin}(b) \\ &\ \text{Step3: } c = (N-W-1)QF \end{flalign} \]

2. 定点数转换为浮点数

已知一位宽为 \(N\) ,小数字长为 \(F\) 的二进制小数,那么其所指代的浮点数 \(a\) 为:

\[a= \text{bin2dec}(N)/2^F \]

学习参考链接:

  1. FPGA的算法解析3:定点数与浮点数 - 知乎 (zhihu.com)
  2. 浮点数和定点数的相互转换(浮点数量化为定点)_定点转浮点-CSDN博客

标签:转换,二进制,text,浮点数,表示法,定点数,正数
From: https://www.cnblogs.com/luxzhi/p/17895737.html

相关文章

  • 关于浮点数误差以及四舍五入
    https://blog.csdn.net/Xavier_97/article/details/126931927由于很玄学,我们考虑统一使用库函数round和自己手写round来实现最终输出整数的四舍五入和小数保留k位的四舍五入#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublea=1.4999999......
  • 【C语言基础】float、double 浮点数类型的四舍五入问题
    简短不看版:C语言中,不能进行doublea==doubleb 这样的运算。另外,printf(".1f",&double)的时候,数据输出不同时候,可能会不一样。根本问题时float类型或者double类型的浮点数在计算机中不能精确储存。              单精度浮点型(float)存储方式比如,若我们希......
  • 【C语言】浮点数在内存中的存储
    常⻅的浮点数:3.14159、1E10等,浮点数家族包括:float、double、longdouble类型。 浮点数表⽰的范围:float.h中定义我们先通过一道题目来了解:#include<stdio.h>intmain(){intn=9;float*pFloat=(float*)&n;printf("n的值为:%d\n",n);printf("*pFloat的值为:%f\n",......
  • Java基础——进制,浮点数
    进制二进制:用0,1表示,满2进1。、以0b或者0B开头。八进制用0到7表示,满8进1。以数字0开头。十进制用0到9表示,满10进1十六进制用0到9及A到F表示,此处的A到F不区分大小写,满16进1。以0X或者0x开头。例子如下:inti1=0B10;//二进制0Binti2=010;//八进制0inti3......
  • flotat浮点数类型的误差问题,float a=0.1; 2-a*a*100,和int(2-a*a*100); float的误差问
    来在于洛谷的《深入浅出程序设计竞赛》(基础篇)#include<stdio.h>intmain(){ floata=0.1; printf("%f%f\n",a,a*a); printf("%d\n",int(2-a*a*100)); printf("%.10f",2-a*a*100); return0;}执行结果 原因是这样的,float是浮点数,在执行界面出现的6位小......
  • 【C语言】浮点数取整
    向下取整1. 强制类型转换floatf=1.5;inta;a=(int)f;2.高斯函数doublefloor(doublea)floatf=1.5;inta;a=floor(f);向上取整1.ceil函数doubleceil(doublea)floatf=1.5;inta;a=ceil(f); 2. 强制类型转换+四舍五入floatf=......
  • 浮点数格式: FP64, FP32, FP16, BFLOAT16, TF32
    浮点数格式(参考1,参考2)浮点数是一种用二进制表示的实数,它由三个部分组成:sign(符号位)、exponent(指数位)和fraction(小数位)。不同的浮点数格式有不同的位数分配给这三个部分,从而影响了它们能表示的数值范围和精度。例如: 下面是一些常见的浮点数格式的介绍:FP64(双精度浮点数):用64位......
  • 洛谷B2016 浮点数向零舍入(Python3)
    要点:1.有正有负怎么办?正负分开写?如果只看数字部分,那取整的方式是一样的。所以我们可以先输出符号,把问题全都转化到非负数集中。2.如何取整?此处取整为向下取整。而强制类型转换把浮点数转化为整型数的时候是把小数部分全部去掉,而不是四舍五入,与题中取整方式相符,故可直......
  • 2.3 CE修改器:浮点数扫描
    本关需要使用CheatEngine工具对浮点数进行扫描,完成修改任务。浮点数是一种带有小数点的数值,通过“浮点数”扫描方式进行修改。本关中,健康值为单精度浮点数,弹药值为双精度浮点数,需要将这两项数值都修改为5000或更高。提示建议禁用“快速扫描”功能,以获取更准确的扫描结果。这......
  • 2.3 CE修改器:浮点数扫描
    本关需要使用CheatEngine工具对浮点数进行扫描,完成修改任务。浮点数是一种带有小数点的数值,通过“浮点数”扫描方式进行修改。本关中,健康值为单精度浮点数,弹药值为双精度浮点数,需要将这两项数值都修改为5000或更高。提示建议禁用“快速扫描”功能,以获取更准确的扫描结果。这......