我正在努力学习 C,现在我是一个花车。我知道所有值在不同的机器上都有不同的大小。但我正在努力学习这个概念。
假设一个浮点数保存在 4 个字节中。我读到第一位是符号位,它决定数字是正数还是负数。然后接下来的 7 位是指数,其余(23 位)是尾数。可能是这样的:1 010 1001 0000 0000 1011 1001 0000 111
但这如何转化为浮点数?我可以阅读二进制文件,但我看不到它背后的公式:)。有人可以向我解释一下,或者它是如何工作的吗?
我正在努力学习 C,现在我是一个花车。我知道所有值在不同的机器上都有不同的大小。但我正在努力学习这个概念。
假设一个浮点数保存在 4 个字节中。我读到第一位是符号位,它决定数字是正数还是负数。然后接下来的 7 位是指数,其余(23 位)是尾数。可能是这样的:1 010 1001 0000 0000 1011 1001 0000 111
但这如何转化为浮点数?我可以阅读二进制文件,但我看不到它背后的公式:)。有人可以向我解释一下,或者它是如何工作的吗?
这是我几年前写的。
我认为它应该可以帮助您了解浮点数的表示方式:
http://www.eosgarden.com/en/articles/float/
基本上,归一化数字的公式是: -1^S * 1.M * 2^( E - 127 )
其中S是符号,M是尾数,E是指数。但一切都在上一个链接中详细解释。
指数中有8位:seee eeee emmm mmmm mmmm mmmm mmmm mmmm
公式为:(-1)^s * 1.M * 2^(E - 127)
我用大 M 和 E 分别代表所有的 m 和 e 位。M部分是二进制,E部分是十进制。