一个是十转十六,一个是十六转十,为什么-4.5是C803而不是C800?
2进制表示小数存在精度问题,这是没办法解决的问题。所以,尽量避免用2进制表示小数,整数不存在这个问题。典型的0.1+0.2是不等于0.3的
你这个不存在精度问题,这几个小数都是可以用二进制完全表示的。
但问题在你们课本上教的16位的浮点数二进制表示法是怎样的,好像和IEEE的标准不一样?
IEEE规定的16位浮点数二进制表示法为,第1位为符号位,表示正负,第2到第6位表示指数,减去偏移数15,最后10位表示真分数。
-4.5 转成二进制为 -100.1,小数点向左浮动2位,变成-1.001 x 2^10,负数符号位为1。
但这个例子里C803表示好像是把指数挪到最右边了。所以你在课本里确认一下你们使用的是什么规则。