32 位 IEEE 浮点值 CC4C0000 的十进制等效值是多少?
What is the decimal equivalent of the 32-bit IEEE floating point value CC4C0000?
我做的第一件事就是将它转换成二进制,所以我得到
CC4C0000 = 1100 1100 0100 1100 0000 0000 0000 0000
现在我知道这个数字是负数,因为符号位(二进制表示中的第一位是1)。
指数是接下来的 8 位,即 10011000,等于 2^7 + 2^4 + 2^3 = 128 + 16 + 8 = 152
现在小数部分就是剩下的23位100 1100 0000 0000 0000 0000。
现在我的问题是,真正的指数是多少?
应该是 152-127 = 25 对吧?
小数部分是.100 1100 0000 0000 0000 0000
重新插入前导后,我们得到 1.100 1100 0000 0000 0000 0000。
现在我知道 .100 1100 0000 0000 0000 0000 等于 0.59375
所以最后的答案应该是 -1.59375 x 2^25.
但为什么不是正确答案。
当我把 cc4c0000 放入这个 url
http://www.h-schmidt.net/FloatConverter/IEEE754.html
答案不同,我的错误在哪里?
感谢您的帮助:)
这里有几个假设:
- 字节按 "Network" 顺序排列(即重要字节在前)
- 格式是 IEEE 754(但公平地说,我不知道它可能是什么其他 IEEE 格式..)
使用 Python 我可以使用 unhexlify
命令将您的十六进制字符串数据转换为字节字符串,然后 struct.unpack
将其作为 IEEE 754 读入 ...
struct.unpack('!f', unhexlify('CC4C0000'))
(-53477376.0,)
我不能确定这是否是您给定假设的 "correct answer",但它应该为您提供确定它的工具。
python struct
模块的文档在这里:https://docs.python.org/2/library/struct.html#format-characters
你的思路是正确的,没有出错。
-1.59375 * 2^25 = -53477376
这正是您链接的网络应用给我的答案。仔细检查你在最后的乘法中没有犯任何愚蠢的错误。
我做的第一件事就是将它转换成二进制,所以我得到
CC4C0000 = 1100 1100 0100 1100 0000 0000 0000 0000
现在我知道这个数字是负数,因为符号位(二进制表示中的第一位是1)。
指数是接下来的 8 位,即 10011000,等于 2^7 + 2^4 + 2^3 = 128 + 16 + 8 = 152
现在小数部分就是剩下的23位100 1100 0000 0000 0000 0000。
现在我的问题是,真正的指数是多少?
应该是 152-127 = 25 对吧?
小数部分是.100 1100 0000 0000 0000 0000
重新插入前导后,我们得到 1.100 1100 0000 0000 0000 0000。
现在我知道 .100 1100 0000 0000 0000 0000 等于 0.59375
所以最后的答案应该是 -1.59375 x 2^25.
但为什么不是正确答案。
当我把 cc4c0000 放入这个 url
http://www.h-schmidt.net/FloatConverter/IEEE754.html
答案不同,我的错误在哪里?
感谢您的帮助:)
这里有几个假设:
- 字节按 "Network" 顺序排列(即重要字节在前)
- 格式是 IEEE 754(但公平地说,我不知道它可能是什么其他 IEEE 格式..)
使用 Python 我可以使用 unhexlify
命令将您的十六进制字符串数据转换为字节字符串,然后 struct.unpack
将其作为 IEEE 754 读入 ...
struct.unpack('!f', unhexlify('CC4C0000'))
(-53477376.0,)
我不能确定这是否是您给定假设的 "correct answer",但它应该为您提供确定它的工具。
python struct
模块的文档在这里:https://docs.python.org/2/library/struct.html#format-characters
你的思路是正确的,没有出错。
-1.59375 * 2^25 = -53477376
这正是您链接的网络应用给我的答案。仔细检查你在最后的乘法中没有犯任何愚蠢的错误。