浮点数格式备忘

浮点数格式备忘

32位浮点数格式

32位浮点数从高位到低位依次是1bit符号位,8bits阶码和23bit尾数部分,其中尾数部分为纯小数,计算的时候需要加1

浮点数1.0

浮点数1.0C++程序中的存储方式为

0x3f 0x80, 0x00, 0x00

换算为二进制数据为

0011 1111 1000 0000 0000 0000 0000 0000

其中符号位为0,表明这是一个正数

阶码部分为01111111,换算为十进制为127,表明2的幂次为0

尾数部分为全零

浮点数2.0

浮点数2.0C++程序中的存储方式为

0x40, 0x00, 0x00, 0x00

换算为二进制数据为

0010 0000 0000 0000 0000 0000 0000 0000

其中符号位为0,表明这是一个正数

阶码部分为10000000,换算为十进制数据为128,表明2的幂次为1

尾数部分为全零

浮点数-1.5

浮点数-1.5C++程序中的存储方式为

0xbf, 0xc0, 0x00, 0x00

换算为二进制数据为

1011 1111 1100 0000 0000 0000 0000 0000

其中符号位为1,表明这是一个负数

阶码部分为01111111,换算为十进制数据为127,表明2的幂次为0

尾数部分为100 0000 0000 0000 0000 0000,换算为十进制数据为0.5

因此浮点数表示的值为-1.5

浮点数根号2

浮点数根号2的二进制表示为

0x3f, 0xb5, 0x04, 0xf3

换算为二进制数为

0011 1111 1011 0101 0000 0100 1111 0011

其中符号位为0,表明这是一个正数

阶码部分为0111 1111,换算为十进制数据为127,表明2的幂次为0

尾数部分为011 0101 0000 0100 1111 0011,因此这个数据的定点数表示为

1. 011 0101 0000 0100 1111 0011,换算为十进制数据为

11863283 / 8388608 = 1.414213538169861

测试程序

#include <iostream>

#include <cmath>

 

using namespace std;

 

union FloatNumber

{

         float number;

         unsigned char byteArray[4];

};

 

class FloatPointNumber

{

         union FloatNumber floatNum;

 

public:

         FloatPointNumber(float number)

         {

                   floatNum.number = number;

         }

 

public: 

         void setFloatPointNumber(float number)

         {

                   floatNum.number = number;

         }

 

public:

         void printByteArray()

         {

                   cout << hex << (int)floatNum.byteArray[3] <<" " << (int)floatNum.byteArray[2] <<" "

                             << (int)floatNum.byteArray[1] <<" " << (int)floatNum.byteArray[0] << endl;

         }

};

 

int main()

{

         FloatPointNumber *pFloatPointNumber = new FloatPointNumber(float(sqrt(2.0)));

         pFloatPointNumber ->printByteArray();

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值