浮点数与定点数理解、定点数转浮点数相互转换

article/2025/9/27 8:01:21

1、浮点数理解

在平常的代码编写中大家经常用到float 32、double 64等,但是否有深入的去了解一下这类数据是怎么表示的呢?今天我们就去学习浮点数的表示方法,以及其优缺点。

首先浮点数为什么叫浮点数呢?因为浮点数的小数点的位置不是固定不变的,是浮动的,所以就称之为浮点数;与之相对,那定点数就是小数点位置固定不变的数了。

浮点数一般由三部分组成,其分别为【符号位S】、【阶码E】、【尾数M】,此外还有一个重要的组成部分为【基数R】,不过一般基数固定为2,因此我们不做过多讨论。

当前的浮点数使用IEEE754标准,以float 32为例,其在计算机中的存储格式如下:

 其中符号位占1位、阶码位占8位、尾数位占23位

【符号位S】、【阶码E】、【尾数M】与该数所表示数值的关系见以下公式:

其中1.M涉及一个知识点----“存储数据规格化”,即要求【尾数M】的绝对值需要大于基数的倒数,公式表达如下:,当R为2时,。因此就规定,尾数的第一位为1;因为都为1,所以在存储时该位会被省略,但在计算时我们需要将它加上。

eg1:使用32位浮点数表示小数-3.75

所以:【符号位S = 1】、【阶码E = 1000 0000】、【尾数M = 1110 0000 0000 0000 0000 0000】

2、定点数理解

定点数即为小数点固定的数,以常见的int型数据,即为小数点位于末尾的定定点数。与浮点数相比,定点数最大的特点是“乘以基数可以通过对数据的移位进行操作(像int数乘2可以左移1位实现)”,但由于浮点数不同位有不同的含义,无法通过移位进行操作。

eg2:使用8位定点数表示小数-0.75(规定8位定点数由1个符号位,0个整数位,7个小数位组成)

表示的最大正数:0111 1111 即为:0.5+0.25+0.125+0.0625+0.03125+0.015625+0.0078125 = 0.9921875

表示的最大负数:1111 1111 即为:-(0.5+0.25+0.125+0.0625+0.03125+0.015625+0.0078125)= - 0.9921875

表示的最小正数:0000 0001 即为:0.0078125 

表示的最小负数:1000 0001 即为:- 0.0078125

表示精度为:

定点数缺点:定点数表示法简单直观,但是数值表示的范围太小,运算时容易产生 溢出。因此在计算时采用表示范围较大的数存储中间变量。

3、浮点数与定点数相互转换

假定8位定点数由1个符号位,4个整数位,3个小数位组成(即Q定标3)

eg3:使用定标为Q3的8位定点数表示浮点数x=0.6

用二进制表示4为:0 0000 100

eg4:将Q3表示的8位定点数0 0000 100转换为浮点数

从以上的eg3与eg4可以看出,浮点数在转换为定点数的过程中,产生了误差(0.6变为了0.5)。

为了最大限度的保持数的精度,在将浮点数转化为定点数前,可以采用四舍五入的方法,即在进行向下取整运算前,先加上0.5,即

重复计算eg3与eg4,;可以明显看出,数据的表示误差减小了。(0.6变为了0.625)

 

 

注:①本文受限于笔者基础知识水平,在以上分析时,未考虑反码与补码的问题;

       ②“存储数据规格化”相关知识理解较浅

 

若读者发现以上文章有错误,麻烦在评论区指出,我会积极更正。

如果认为该文章有帮助,请点个赞,您的点赞是对我最大的鼓励。


http://chatgpt.dhexx.cn/article/fDwZv3pD.shtml

相关文章

定点数的几种表示形式

第二章 数制与编码 2.1 进制之间的转换 掌握:二进制、八进制、十六进制(末位加H表示)、十进制及彼此之间的转换; 问:小数怎么转换? 十进制转二进制:乘以权值再累加,如小数点后第一位的权值是2^(-1) 二进…

计算机中定点数表示方法练习

1【单选题】针对8位二进制数,下列说法中正确的是 。(5.0分) A、-127的补码为10000000 B、-127的反码等于0的移码 C、1的移码等于-127的反码 D、0的补码等于-1的反码 正确答案: B 2【单选题】若某数x的真值为-0.1010,在计算机中该数表示为1.0…

定点数的表示和运算

本文主要介绍以下几方面知识: 定点数的表示(无符号数、有符号数)移位运算(原码、反码、补码)加减运算(原码加减、补码加减)乘法运算(原码乘法、补码乘法)除法运算&#x…

进制以及浮点数和定点数

文章目录 一,进制(1)全国各地最熟悉也最习惯的进制--十进制数1.十进制2.基数3.十进制数的权位展开式4.十进制权位展开式的理解5.十进制对于计算机的局限 (2)计算机所能理解的进制--二进制数1.二进制2.数据存储3.常见信…

定点数的乘除运算

定点数的乘除运算 定点数的乘法运算原码一位乘法手算模拟补码一位乘法(Booth算法) 定点数的除法法运算原码除法运算恢复余数法不恢复余数法 补码除法运算(加减交替法)总结 定点数的乘法运算 在计算机中,乘法运算由累加…

定点数的加减法

文章目录 1.补码加法1.1 补码加法公式1.2 补码加法公式证明 2.补码减法3.溢出概念与检测方法3.1 溢出的概念3.2 溢出的检测方法 参考文献 数值运算的核心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表示形式,因此相应有定点数的运算和浮点数的运…

定点数类型

正因为用浮点数表示小数可能会有不精确的情况,在一些情况下我们必须保证小数是精确的,所以设计MySQL的大叔们提出一种称之为定点数的数据类型,它也是存储小数的一种方式: 其中: M表示该小数最多需要的十进制有效数字个…

定点数的表示

计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。所谓定点数和浮点数,是指在计算机中一个数的小数点的位置是固定的还是浮动的:如果一个数中小数点的位置是固定的,则为定点数;如果一个数中小…

定点数运算

reference: http://wenku.baidu.com/link?urlnUzHmqrtKkQ4fOfUb2SW7hBEGS47wlJEw1DS6uW3U3onryAWk-XWlkLHwd3tKbxhoFYDzeDEd3cjYr5ww-MKgpTP_lNYLkjwpXuatw11ply 原补码关系,参考:http://blog.csdn.net/limanjihe/article/details/52440638 补码的设计目的:   …

定点数的表示方法

文章目录 1.定点数的表示形式2.定点数的原码、反码与补码3.定点小数注意事项参考文献 计算机中数值的表示有两种形式,一是定点数(Fixed-point Number),二是浮点数(Floating-point Number)。 1.定点数的表示…

定点数(fixed-point number)的运算

定点数的运算 1. 定点数2. 定点数加减运算3. 定点数加减运算的溢出判断3.1 用一位符号位判断溢出3.2 用两位符号位判断溢出3.3 最高位和次高位判断溢出 4. 乘法运算4.1 分析笔算乘法4.2 笔算乘法的改进4.3 图示4.4 硬件配置4.5 表格示意图 5. 除法运算5.1 分析笔算除法5.2 笔算…

[计算机组成原理]2-4、定点数详解

定点数详解 看笔记一定要心静,慢慢来不急。 定点数解释为小数点固定的数。 我们平常使用的数字大部分都属于定点数。比如1.0;110;192.168等等。这么说可能我们对定点数还是没有什么概念,毕竟没有参照物,那么与定点数…

Java枚举类实现

一、枚举类的特点 1.类的对象只有有限个,且为静态常量 2.当需要定义一组常量时,强烈建议使用枚举类 二、如何定义枚举类 jdk1.5之前:自定义枚举类 jdk1.5 :可以使用enum关键字来定义枚举类 2.1自定义枚举类实现: package enumte…

java枚举

为什么需要枚举? 一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,比如成绩Grade只能为ABCDE。此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。枚举…

Java枚举中定义属性

文章目录 1、复习枚举2、自定义属性3、自定义属性枚举类和常量的对比4、常用方法5、枚举自定义属性在开发中的应用:字典表6、补充:入参校验 刚接触枚举时的例子太简单,就一个Season枚举类,里面四个常量值,后来开发中看…

Java 枚举(Enum)使用

文章目录 枚举引入enum关键字实现枚举enum关键字实现枚举注意事项enum常用方法一览表enum课堂练习enum实现接口 枚举引入 创建Season类, 实例化春夏秋冬四个实例 Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, autumn, winter) 2.只读,不需要修…

Java枚举详解

目录 Java枚举详解 基本介绍 1.自定义类实现枚举 2.使用enum关键字实现枚举 使用enum关键字实现枚举的注意事项 enum的常用方法 enum的使用细节 Java枚举详解 基本介绍 枚举对应英文(enumeration,简写 enum) 枚举是一组常量的集合 枚举属于一种特殊的类,里…

Java枚举(enum)

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为…

如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性

关于pFuzz pFuzz是一款功能强大的Web应用程序防火墙安全检测/绕过工具,可以帮助广大研究人员同时通过多种方式绕过目标Web应用程序防火墙,以测试WAF的安全性。 pFuzz本质上是一款高级红队模糊测试工具,主要用于研究目的。pFuzz基于Python编…

jieba java_【NLP】【一】中文分词之jieba

声明:本文参考jieba官方文档而成,官方链接:https://github.com/fxsjy/jieba 【一】jieba安装 pip install jieba 【二】jieba简介 简介可见jieba官方说明:https://pypi.org/project/jieba/ 总而言之,jieba用于中文分词…