答案
这个问题我已经解决,我把方法写出来供大家参考:
浮点数占用四个字节,在内存中的格式如下:
SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM 。
高位------------------------------------------à低位
由高到底一共有32位。S为符号位,在最高位占一位。“1”表示负,“0”表示负。E为阶码,占用8位,阶码E值是以2为底的指数再加上偏移量127,这样处理的目的是为避免出现负的阶码值[小注1]。M为尾数的小数部分,用23位二进制表示。
第一步:
124.75D=1111100.11B,转换方法为:整数部分直接转换,小数部分则乘2取整,得到上面结果。
第二步:
1111100.11B=1.11110011*2E6B,计算方法为:将结果的小数点向右6次得到初值。注意:尾数的整数部分永远为1,因此不予保存,但它是隐含的。
第三步:
尾数为11110011,指数为6,(整数部分不予保留)。根据C51的规则,指数要加127,所以指数应为6+127=133D=10000101B,组合起来就是:01000010 11111001 10000000 00000000 (42 F9 80 00)
计算结束。
小注1:因为阶码是可正可负,其范围从-126----------127,在这里如果再出现负值表示起来颇为不便 ,所以,人们为了表示上的方便,特意做了处理。让实际的值加上127,这样就能保证是大于0的值。
至于小注是我自已想的可能不对,可能还有别的原因。
发表时间:2003年6月20日19:16:47