zoukankan      html  css  js  c++  java
  • 浮点数的存储、类型转换知识点(面宝P34)

    以float a=1.0f为例:

    (int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1;

    (int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换),即读a的内存时按照整数来读取,而不考虑a本来的类型。为1065353216(3f800000的十进制表示);

    (int)&a是将a的地址(16进制数)转换为十进制,没有什么实际意义。

    问题分析:

    (1)float类型中,所存储的指数位=实际的指数+127,尾数部分为底数的小数部分(底数整数部分应为1,省略不写)。

      特例:float a=0.0f;中0的存储,指数尾数均为0。

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    int main(){
    float b=0.0f;
    cout<<(int)b<<endl;
    cout<<&b<<endl;
    cout<<(int&)b<<endl;
    cout<<((int)b==(int&)b)<<endl;
    return 0;
    }

    float b=0.0f;运行输出:

    若改为 float b=1.0f;则结果如下(1065353216是3f800000的十进制表示)

  • 相关阅读:
    gems gems gems
    poj 6206 Apple
    lightoj1341唯一分解定理
    lightoj1370欧拉函数
    约瑟夫环lightoj1179
    拓展欧几里得算法
    RMQ算法
    poj1502MPI Maelstrom
    poj1860Currency Exchange
    生成全排列
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3621550.html
Copyright © 2011-2022 走看看