当前位置:首页 » 存储配置 » 浮点数存储

浮点数存储

发布时间: 2022-01-08 10:58:21

A. 浮点数 在计算机内的存储形式

浮点数不难,但是要想记熟还真有点不容易,多琢磨琢磨。

一般情况下,浮点数的表示有一下几个要点:

1、要规格化(让浮点数表示结果唯一),因为100=10^2 = 0.1 * 10^3, 所以第一步要统一地规格化,确定“阶数”和“尾数”(尾数在0.5-1之间,也就是二进制的0.1-1.0之间)

2、“阶码”一般用“移码”表示法,而“尾数”一般用“原码/补码表示法,“数符”表示浮点数的正副号

3、浮点数的形式: “符号位”【应该就是‘数符’】+“阶码”+“尾数“
--浮点数的表示按照不同地标准,表示方法不同,你的原问题没讲清楚用什么格式表示,我就用最常用地格式来理解了
------------------
其实就以上两点,计算机中“‘帯符号数’的表示”有四种:原码、补码、反码、移码,这些都是基础知识,可以自己去看一下这四种表示方法,就自然明白“阶符、数符”这些相当于“符号位”的作用了。

先简单讲一下吧,你再结合详细资料看吧:【设所表示的都是定点纯小数】
(小数点前面可以看成是“符号位”,也就对应原来地“阶符”和“数符”)
原码:0.11表示0.75(2^-1 + 2 ^-2), 1.11表示 ‘-0.75’(前面的1相当于符号位,表示这个数是负数,也就是说“符号位是0”表示正数,1表示负数)

补码:最普遍地就是补码了 0.11表示0.75, 1.11表示‘-0.25’(也是“0”为正数,1为负数。和原码地规律一样)

反码,最简单了:正数不变,负数对每一位‘取反’即可,0.11=0.75,1.10=-0.25(即0.01地相反数)
-------------以上三种表示方法,对正数的情况都不做处理,但是移码表示法要对正数做处理。

移码:1.01=0.25,而0.01=-0.75
。移码复杂一点,他的表示方法是: 移码= 2^阶码位数 + 真值(真值:指原来那个‘帯符号数’,注意要把把正副号带入计算)

-----------------------------------
N=-0.110101x2^100: 阶数是“正100”,尾数是“负0.110101”,所以整个浮点数是个负数,所以第一位是“1”【第一个符号位-“数符”表示‘尾数的正负号’】
阶码是“10 0100”【移码表示法,最高位是“符号位”】

所以,应该表示为: 1(符号位) 100100(阶码的移码表示) 11010100【尾数和符号位结合起来,用的是原码表示法】

B. 请问浮点型数据在计算机是怎么存储的

对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit。

无论是单精度还是双精度在存储中都分为三个部分:

1、符号位(Sign) : 0代表正,1代表为负。

2、指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储。

3、尾数部分(Mantissa):尾数部分。

(2)浮点数存储扩展阅读

实型变量分为两类:单精度型和双精度型,

其类型说明符为float 单精度说明符,double
双精度说明符。在Turbo
C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。

双精度型占8
个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

实型变量说明的格式和书写规则与整型相同。

例如: float x,y; (x,y为单精度实型量)

double a,b,c; (a,b,c为双精度实型量)

实型常数不分单、双精度,都按双精度double型处理。

C. 浮点数的存储问题

先看看浮点数格式
·一个浮点数总共有4个字节,32位
第一个比特表符号 0正数 1负数
后八个比特表阶码,即为指数,这个数在实际的数上面加127
最后23个比特表尾数 原码表示

具体分析
对于3.25

正数 首位为0

用二进制表示 11.01=1.101乘以2的1次方
所以阶码为1 127+1=128
10000000

对于尾数1.101,因为规格化的数都是最高位为1,即小数点左边的数为1
所以这个1就省略,因此存储的时候就存101

10100000 00000000 0000000

把所有的拼起来
01000000 01010000 00000000 00000000

你的上面最后写反了

D. 计算机浮点数的储存原理

浮点是以单元形式储存在内存上的,但每个单元内存有限,所以比如你想输入1/3的话,你以为是1/3了,实际上不足1/3,而是0.3333333333333333,所以计算时,会以0.3333333333333333的形式去计算,而不是1/3,因此出现了本来是0.6的,而输出却是0.599976.建议把浮点精度变大

热点内容
安卓ops是什么文件 发布:2024-11-15 16:32:18 浏览:927
双线性插值算法c 发布:2024-11-15 16:30:45 浏览:866
c语言和vc的区别 发布:2024-11-15 16:19:23 浏览:118
linux是免费的吗 发布:2024-11-15 15:53:44 浏览:617
多控存储 发布:2024-11-15 15:52:42 浏览:283
一年级数学分解算法 发布:2024-11-15 15:41:08 浏览:411
安卓个人热点怎么分享 发布:2024-11-15 15:40:16 浏览:264
垫钱解压 发布:2024-11-15 15:38:54 浏览:336
miui4相当于安卓什么系统 发布:2024-11-15 15:37:54 浏览:709
rc4android 发布:2024-11-15 15:27:25 浏览:742