IEEE Standard 754 浮点数

本文介绍了C语言中单精度浮点数的表示方法,包括符号位、指数和尾数的定义及计算过程,并通过两个实例详细解析了十进制数转换为二进制浮点数的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,在C语言家族的编程语言中,常用到的是单精度浮点数(single precision)和双精度浮点数(double precision)。它们的 表示方法如下:

在这里插入图片描述
Sign:0代表正数,1代表负数(no surprise)
Exponent:8位的二进制数值,可以表示0~255范围的256个数,。。。等等。。。进行幂的计算时是有正有负的,不需要as before留出第一位作为符号位吗?
由于sign已经是符号位了,在阶码中再弄一个符号位会导致补码功能失效(为啥?有待下次探究)。
这里使exponent有正有负的操作是减去127,所以它的范围是-127到128。
Mantissa:尾数,相当于十进制科学计数法中小数点后面的数,具体使用时是(1+Mantissa)
在这里插入图片描述

2,例子

2.1 十进制化成二进制浮点数:
(100.227)10(100.227)_{10}(100.227)10
用二进制表示出来为1100100.001110100001110010111100100.001110100001110010111100100.00111010000111001011
化成规范化数为1.10010000111010000111001011∗261.10010000111010000111001011*2^61.1001000011101000011100101126
Sign:
1
exponent:
由于最高阶为6,则阶码为6+127=133,二进制形式为100001011000010110000101
Mantissa:
10010000111010000111001011 (尾数不够用了,去掉后面三位,使得总数为23位)。
综上,(100.227)10(100.227)_{10}(100.227)10在计算机中的存储形式为11000010110010000111010000111001(一共32字节)。

2.2 浮点数化成二进制数:
(10111111010...0)2(10111111010...0)_{2}(10111111010...0)2,中间省略20个零。
拆解成三部分:
1:符号位,是个负数;
01111110:阶码位,126-127=-1
10…0:尾数
结果为−1.10...0∗2−1=(−0.75)10-1.10...0*2^{-1}=(-0.75)_{10}1.10...021=(0.75)10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值