C从二进制中浮动

时间:2013-01-09 15:52:41

标签: c floating-point

我正在努力学习C,现在我是一个花车。我知道所有值在不同的机器上都有不同的尺寸。但我正在努力学习这个概念。

让我们说浮点数保存为4个字节。我读到第一位是符号位,它决定数字是正数还是负数。然后接下来的7位是指数,其余的(23位)是尾数。这可能是这样的: 1 010 1001 0000 0000 1011 1001 0000 111

但这又如何转化为浮动?我可以读二进制,但我没有看到它背后的公式:)。有人可以向我解释这个,或者它是如何工作的?

2 个答案:

答案 0 :(得分:2)

几年前我写过这篇文章 我认为它应该有助于您理解浮点数的表示方式:

http://www.eosgarden.com/en/articles/float/

基本上,标准化数字的公式为: -1^S * 1.M * 2^( E - 127 ) 其中 S 是符号, M 是尾数,<强> E 指数。但是在上一个链接中详细解释了所有内容。

答案 1 :(得分:1)

指数中有8位: seee eeee emmm mmmm mmmm mmmm mmmm mmmm

公式是: (-1)^ s * 1.M * 2 ^(E - 127)

我使用大M和E分别表示所有m和e位。 M部分是二进制,E部分是十进制。