C语言中float(浮点数)与二进制的转换关系

您所在的位置:网站首页 c语言浮点数规则 C语言中float(浮点数)与二进制的转换关系

C语言中float(浮点数)与二进制的转换关系

2023-09-03 17:26| 来源: 网络整理| 查看: 265

1、float 浮点数

在IEEE-754标准中float定义格式为: |------|------------|---------------------------------------| |符号| --阶码—|------------尾数---------------------|

符号表示正负:0为正,1为负; 阶码表示基的指数,因为是二进制,因此基是2,表示为2^n,阶数需要转换时需要±127 尾数表示小数点后面的数,需要由二进制转换成小数点后的数

在实际的物理存储中又分为如下长度:

s(符号)E(阶码)M(尾数)32bit1bit8bit23bit64bit1bit11bit52bit

二进制转float公式为:

1. M ∗ 2 E − 127 = f l o a t 1.M*2^{E-127}=float 1.M∗2E−127=float

1.(尾数)*2^(阶码-127) = (十进制)浮点数

2、举例

例1:-12.5转换为float二进制表示

整数部分12,二进制:1100,小数部分0.5,二进制:.1

将这两部分合起来为1100.1。 由于阶数为2,因此需要将(1100.1)左移3位改为(1.1001*2^3),其中3位指数,.1001为尾数; 阶数需要指数加上偏移量127,因此阶数为130(3+127),二进制为(10000010); 由于是负数,因此符号位为1; (-12.5)=(1 10000010 10010000000000000000000 )

例2:(0 01111101 10011001100110011001101)转换为十进制

符号位为0,是整数; 阶码为(01111101)= 125,需要减去偏移量127;(125-127)= -2 尾数为:(.10011001100110011001101)=.0.600006103515625

小数点二进制转换为十进制: 2^(-1) + 2^(-4)+ 2^(-5) + 2^(-8) + 2^(-9) + 2^(-12) + 2^(-13) + 2^(-15) = .0.600006103515625

尾数的小数点前默认为1,即1.尾数 于是:1.600006103515625*2^(-2) = 0.4000000059604644775390625 = 0.4000



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3