浮点数的十进制转十六进制原理:
第一、这里有个误区:浮点数的十进制?
浮点数在计算机的内存里,几乎都是以二进制格式存储的,如果你要强行将其转成10进制,那么又有新的问题出现,10进制的表达方式是什么?
如123456,可以用6个字节表示:01H,02H,03H,04H,05H,06H。也可以用3个字节表示,即BCD码:12H,34H,56H。
不懂汇编语言,是不太好理解的。
第二、如果浮点数有小数,在16进行中如何表示小数呢?如:3.14。
这个问题涉及浮点数与定点数。比如,用4个字节来表示,前三个字节表示整数,后一个字节表示小数(这叫定点数,规定了小数点的位置,看似简单,却有难点!)。
难点1:整数有限制,不能大于FFFFFFH=16777215,否则溢出,这还好说好解决。
难点2:更麻烦的是,小数0.14,你几乎想象不出它的如何写!
以3.5为例:3.5可以写成:00H,00H,03H,80H。
能不能写成:00H,00H,03H,05H呢?不能!你做个3.5+3.5就知道为何,16进制的0.5为何要写成80H而不是05H了。
讨厌的小数部分0.14如何用16进行表达,就不在这里繁琐了,还是那句话:不懂汇编语言,是不太好理解的。(3.14在这里只能近似地写成00H,00H,03H,24H,而不是00H,00H,03H,14H,小数部分要先乘以256,然后而存入整数部分)
楼主要:【求教浮点数的十进制转十六进制原理和代码】,建议先学通汇编。
否则:就听取楼上其它人的建议吧。
不是不讲给你听,而是比较复杂,你也缺一些课,不易简单地就能让你明白。
|