c语言实现单精度规格化浮点数,实数真值-2.5如果用单精度规格化浮点数据格式表达,其编码是什么?要求给出转换过程...

C是这样定义单精度数据的——

共有32二进制位,1位符号位+8位阶码(小数点要移动的位数)+23位尾数:

最高位是符号位,1表示负数,0表示正数。这里-2.5,所以取1。

接着是8位阶码,阶码用移码表示,最高位为符号,0表负、1表正;单精度要在原值上+127实现,即加01111111。

把尾数原码接着写在后面,无限小数写够23位即可。注意原码都要化成以1打头(就是小数点移到第一个有效1之后,恢复时小数点应该向哪个方向移几位由阶码表示),并把小数点前面的1省写即可。

对于-2.5具体是这样转换的:

求尾数:2.5的二进制原码是10.1,变成1.01并省去小数点前面的1为01,01就是尾数。

求阶码:由1.01恢复为10.1小数点要向右移一位,所以阶码符号为1(正)、移值为0000001;0000001+1111111=10000000。这就是-2.5的阶码。

求全码:1+10000000+01-->11000000 00100000 00000000 00000000——后面的0是补上的,因为小数点后的0实际无数学意义,但C中要补齐32位。最后11000000 00100000 00000000 00000000这个数就是-2.5的格式化表达。

不知你问的是不是这个意思。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值