当前位置:首页 » 服务存储 » 数字存储形式浮点数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数字存储形式浮点数

发布时间: 2022-02-24 17:13:41

A. 计算机内部数字储存形式有定点数和什么

电脑内部储存形式有定点数和浮点数。
浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。
希望我能帮助你解疑释惑。

B. c语言实型(浮点型)数据在内存中的存放形式

实数分为float型和double型,它们分别对应IEEE 754标准中的单精度浮点数和双精度浮点数类型,在内存中的存储形式遵守IEEE 754浮点数标准。以float类型数据为例,3.14159表示成二进制为11.0010010000111111001111......,规格化后表示为1.10010010000111111001111×2^1(小数点后保留23位有效数字,因为IEEE 754标准规定的尾数为23位);指数为1,故阶码为1+127=128=10000000;这是一个正数故符号位为0,因此它在内存中的表示形式是0 10000000 10010010000111111001111,写成16进制为40490FCF。

C. 我理解的浮点数的存储格式对吗

对的,用阶表示

D. 浮点数在计算机中的存储方式

应该是: 在一个为32bit的存储空间中存储浮点数,bit0~bit22存储有效数字部分;bit23~bit30存储指数部分;bit31存储符号位。 在一个为64bit的存储空间中存储浮点数,bit0~bit51存储有效数字部分;bit52~bit62存储指数部分;bit63存储符号位。 还一种 在一个为80bit的存储空间中存储浮点数,bit0~bit62存储有效数字部分;bit63~bit78存储指数部分;bit79存储符号位。 只有这三种了,其他都不支持的 未来可能还有128位浮点数

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

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

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

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【尾数和符号位结合起来,用的是原码表示法】

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

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

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

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

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

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

(6)数字存储形式浮点数扩展阅读

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

其类型说明符为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型处理。

G. IEEE754标准的单精度浮点数存储形式为如下:求其浮点数的十进制真值.

按照IEEE-754标准规定,单精度浮点数用4字节存储,分为三个部分:符号位S、阶E和尾数D。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位(归一化数据去首位1结果为23位),符号位1位,换算公式为Data = S * 2^(E-127) * (D)。


==>
1100 0001 1110 0000 0000 0000 0000 0000
==>
1位 8位 23位
S E D'(归一化去1结果)
1 100 0001 1 110 0000 0000 0000 0000 0000
1 1000 0011 110 0000 0000 0000 0000 0000
1 1000 0011 0.110 0000 0000 0000 0000 0000
==>
S E D(补1.还原归一化结果)
1 1000 0011 1+0.110 0000 0000 0000 0000 0000
1 8 3 1+0.110 0000 0000 0000 0000 0000
==>
二进制小数 0.11B => 十进制 0.5 + 0.25 = 0.75
S E D整数(2进制) D小数(2进制)
1 8 3 1+0.110 0000 0000 0000 0000 0000
1 0x83 1.110 0000 0000 0000 0000 0000
1 0x83 1 + 0.110 0000 0000 0000 0000 0000
1 131 1 + 0.75
1 131 1.75
==》
S E D
1 131 1.75
=>二进制纯小数
Data = S * 2^(E-127) * (D)
= (-1) * 2^(131-127) * (1.75)
= (-1) * (2^4) * (1.75)
= -1 * 16 * 1.75
= - 28.0

H. 浮点型数据在内存中实际的存放形式(储存形式)

浮点型数据在内存中存储不是按补码形式,是按阶码的方式存储,所以虽然int和float都是占用了4个字节,如果开始存的是int型数据,比如是个25,那么用浮点的方式输出就不是25.0,也许就变的面目全非。
你可以用共用体的方式验证一下。在公用体中定义一个整形成员变量和一个浮点型成员变量,给整形赋值25,输出浮点成员变量,你就知道了。

I. c语言中浮点型数据的存储方式

所谓浮点数, 其实就是二进制的科学计数法. 十进制的科学计数法为 a.b * 10^n (这里 "^" 表示幂). 其中a 大于或等于1而小于10. 只有0不能用这个形式表示.

二进制的科学计数法为 1.x *10^N, 整数部分恒为1, 所以只要存贮X与N就可以.一般都是用一个位存贮符号, 再用几个二进制位存贮X, 另几个二进制位存贮N. 原则就是这样了, 但具体的格式又有所区别. 比如按IEEE来说, 有单精度, 双精度等; 还有一些软件自己定义的格式, 空间哪些位存贮X, 哪些位存贮N, 0怎么办, NaN怎么表示, 等等都要自己规定.

J. 123.5的浮点数存放形式

将float i=123.5写入txt文件,则txt文件中显示123.5,在硬盘中,123.5是以对应字符ASCII码的二进制形式存储的

我新建一个txt文件,用键盘敲进去123.5,它的存储形式是字符串

txt文件中保存的文字都是以字符串形式存储的。

如果想用fread函数读出123.5,那么要用字符数组去读取,并且用sizeof(char)