c语言实数的存放形式,C51中float定义的实数存放形式

C51中的浮点数采用IEEE-754标准来表示,存储长度为4个字节,其中包含3个位域:数符,阶码和尾数。

(1)1位数符位:D31

(2)8位阶码:D30----D23(补码形式存放),其中D30是符号位,与一般表示方法不同,它用1表示正,用0表示负。

(3)23位尾数:D22----D0(原码形式存放)(注意第一位尾数不出现在内存中,它总是1,故省略了。)

将一个实数存数在C中的方式为:

(1)将这个实数的绝对值转化成二进制格式。(整数部分:除二取余,逆序排列;小数部分:乘2取整,顺序排列。)

(2)将这个二进制格式实数的小数点,左移或右移n位,直到整数部分有且只有一位有效数字(即整数部分必须为一个1)。

(3)从小数点左边第一个二进制数字开始,取23位数字放入D22-----D0位(尾数部分)。

(4)如果该实数为整数,则在D31(数符位)位写入1,负数写入0。

(5)如果n是左移得到的,则说明指数是正,则在D30位写入1;如果n是右移得到的或n=0,则D30位放入0。

(6)如果n是左移得到的,则将(n-1)后转化成二进制,并在左边补0得到7位二进制数,放入D29----D23中。如果n是右移得到或n=0,则将你转化成二进制后在左边补0得到7位二进制数,然后依次各位取反,对应写入D29-----D23位。

01000001101111000111101011100001

D31D30D29D28D27D26D25D24D23D22D21D20D19D18D17D16D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0

下面,将23.56化为C语言的float格式存储,讲述浮点数的存数方式:

(1)按“整数部分:除二取余,逆序排列”,“小数部分:乘2取整,顺序排列”将23.56转化成二进制实数约为:10111 . 1000,1111,0101,1100,001(因为要左移4位,所以小数点后保留23-4位数字即可)(若为负数,则此步骤位求其绝对值的二进制实数表达形式)

(2)将小数点左移4位(n=4),得到1 . 0111,1000,1111,0101,1100,001

(3)这时已经有24位位数了,将最高位的1舍去,将剩下的23位小数部分数字对应写入尾数的D22---D0位。

(4)由于23.56是正数,所以在D31(数符位)写入0。

(5)因为我们把小数点左移,因此在D30位放入1(指数为正数)。

(6)因为我们把小数点左移n=4位,所以(n-1)=3,化为二进制,补足7位为:000,0011。写入D29---D23位。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值