浮点数

浮点数的组成

  • 浮点数的组成遵循 IEEE 754计数标准 可以用科学计数法表示
    s 1. M ∗ 2 P s 1.M * 2^P s1.M2P

  • s表示符号,M表示尾数,E表示阶码

    S | P | M
    
    • 其中,S为数的符号位,为0时表示正数,为1时表示负数;
    • P为阶码,通常用移码表示;
    • M为尾数,用原码表示。
  • 在IEEE 754 标准中,约定小数点左边隐含有一位,通常这位数就是1。

  • 在这里插入图片描述

3.89 用 浮点数表示

转 化 为 二 进 制 为 0.89 ≈ 1 / ( 1 < < 1 ) + 1 / ( 1 < < 2 ) + 1 / ( 1 < < 3 ) + 1 / ( 1 < < 7 ) + 1 / ( 1 < < 8 ) + 1 / ( 1 < < 9 ) + 1 / ( 1 < < 10 ) + 1 / ( 1 < < 12 ) + 1 / ( 1 < < 14 ) + 1 / ( 1 < < 15 ) + 1 / ( 1 < < 16 ) + 1 / ( 1 < < 21 ) + 1 / ( 1 < < 22 ) ( 3.89 ) 10 ≈ ( 11.1110001111010111000011 ) 2 浮 点 表 示 ( 一 般 对 指 数 部 分 + 127 , 便 于 浮 点 之 间 比 较 计 算 ) 0 10000000 11110001111010111000011 浮 点 十 六 进 制 表 示 0100 0000 0111 1000 1111 0101 1100 0011 0 x 4078 F 5 C 3 转化为二进制为\\ 0.89 \approx 1/(1<<1) +1/(1<<2) + 1/(1<<3) + \\ 1/(1<<7) + 1/(1<<8) + 1/(1<<9) + 1/(1<<10) +\\ 1/(1<<12) + 1/(1<<14) + 1/(1<<15) + 1/(1<<16) +\\ 1/(1<<21) + 1/(1<<22)\\ (3.89)_{10} \approx (11.1110 0011 1101 0111 0000 11)_{2}\\ 浮点表示(一般对指数部分+127,便于浮点之间比较计算)\\ 0\qquad 10000000\qquad 11110001111010111000011\\ 浮点十六进制表示\\ 0100\quad 0000\quad 0111\quad 1000\quad 1111\quad 0101\quad 1100\quad 0011\\ 0x4078F5C3 0.891/(1<<1)+1/(1<<2)+1/(1<<3)+1/(1<<7)+1/(1<<8)+1/(1<<9)+1/(1<<10)+1/(1<<12)+1/(1<<14)+1/(1<<15)+1/(1<<16)+1/(1<<21)+1/(1<<22)(3.89)10(11.1110001111010111000011)2+127便01000000011110001111010111000011010000000111100011110101110000110x4078F5C3

C语言验证代码

int main(int argc, char const *argv[])
{
    float f = 3.89f; 
    printf("%#x\n",*(int *)&f);
    return 0;
}

极值与Infinity值

  • 浮点值的阶码 定义范围为 -126 ~ 127 ,故阶码的取值为 1~254

  • 最大值

m a x   v a l u e , 阶 码 为 127 , ( 127 + 127 = 254 ) ( 0 1111   1110 1111   1111   1111   1111   1111   111 ) 2 ( 0 X 7 F 7 F   F F F F ) 16 max\ value,阶码为127,(127+127=254)\\ (0\quad1111\ 1110\quad 1111\ 1111\ 1111\ 1111\ 1111\ 111 \\)_{2}\\ (0X7F7F\ FFFF)_{16}\\ max value,127,(127+127=254)(01111 11101111 1111 1111 1111 1111 111)2(0X7F7F FFFF)16

  • 最小正值

m i n   p o s i t i v e   v a l u e , 阶 码 为 − 126 , ( − 126 + 127 = 1 ) ( 0 0000   0001 0000   0000   0000   0000   0000   000 ) 2 ( 0 x 00800000 ) 16 min\ positive\ value ,阶码为-126,(-126+127=1)\\ (0\quad 0000\ 0001\quad 0000\ 0000\ 0000\ 0000\ 0000\ 000)_{2}\\ (0x00800000)_{16}\\ min positive value,126,(126+127=1)(00000 00010000 0000 0000 0000 0000 000)2(0x00800000)16

  • 无限值

i n f i n i t y , 阶 码 为 128 , ( 128 + 127 = 255 ) ( 0 1111   1111 1111   1111   1111   1111   1111   111 ) 2 ( 0 X 7 F F F   F F F F ) 16 infinity,阶码为128,(128+127=255)\\ (0\quad1111\ 1111\quad 1111\ 1111\ 1111\ 1111\ 1111\ 111 \\)_{2}\\ (0X7FFF\ FFFF)_{16}\\ infinity,128,(128+127=255)(01111 11111111 1111 1111 1111 1111 111)2(0X7FFF FFFF)16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值