计算机中浮点数的表示

 我来答
户如乐9318
2022-06-01 · TA获得超过6662个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:140万
展开全部
整数部分:

小数部分:

例如:浮点数 4.8125
整数部分:

小数部分:

将整数与小数部分连接起来就是 100.1101 ,即 =

再如:浮点数 0.05
因为只有小数所以只处理小数部分:

可以看到二进制小数是无法准确表示浮点数的,所以就有了精度一说.
单精度浮点数用32位二进制表示如下:

双精度浮点数用64位二进制表示如下:

由上可知,
单精度浮点数精度为 pow(2,23) = 8388608 = 0.8388608 x pow(10,7)
所以单精度浮点数对应的10进制精度为 7 位多
双精度浮点数精度为 pow(2,52)-1 = 4503599627370496 = 0.4503599627370496 x pow(10,16)
所以双精度浮点数对应的10进制精度为 16 位多

移码(又叫增码)是由补码的符号位取反得到,一般用指数的移码减去1来做浮点数的阶码,
引入的目的是便于浮点数运算时的对阶操作。为了保证浮点数的机器零为全0。

对于定点整数,计算机一般采用补码的来存储。
正整数的符号位为 0,反码、补码、原码都一样。
负整数的符号位为 1,原码、反码和补码的表示各不相同,

由原码变成反码和补码有如下规则:

浮点数二进制表示:

比如十进制4.5的单精度浮点数的二进制 = 表示为上述公式则为

看到这里的 E 为 2 ,那么它在计算机实际存储为 2 + 127 = 129 =

根据上面的公式各部分表示的规则得到一个32位浮点数表示如下表:

符号位为 0 表示是正数,所以 4.5 的二进制存储为 0 10000001 00100000000000000000000 ,即 = 0x40900000

以下 tool.c 是一个测试工具:

下面是我们把上述二进制转为二进制浮点数

如果得到阶码是负数比如下面的 0.5 和 0.05 ,规则是先在首位补 1 ,然后向左移动小数点,不够补 0

综上我们知道
阶码为正小数点 右移 ,先移动小数点再补 1 。
阶码为负小数点 左移 ,先补 1 再移动小数点,不足补 0

二进制浮点数转10进制浮点数,这里是单精度,双精度同理

根据公式定义:

0.15625 二进制表示如下:

转换如下:

IEEE754 Wiki
单精度浮点数
双精度浮点数
浮点数表示
二进制浮点数在线转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式