带有exponet的8位与32位偏置

时间:2015-07-06 15:23:30

标签: c binary bit

我正试图通过二进制数和标准化值来工作。我很困惑,因为我们被教导数字表示为8位值。我们会做8位的例子,其中1位是符号,接下来的4位是指数,然后最后3位是数字。它没问题然后我们跳到32位数字,其中1位是符号,接下来的8位是指数,最后23位是剩余数字。

我的问题是为什么不同的陈述?有时数字是8位有时32位?为什么不将它们设为3位然后有时为13位?或者将它们设为40位和64位?似乎没有押韵或理由。当我们谈论数字或32时,我们处理的是8位吗?这是一个例子。

https://www.youtube.com/watch?v=vi5RXPBO-8E

任何帮助解释都会有所帮助。现在我不知道我是否应该研究基于8位或32位的材料,第1位是一个符号,第二位是指数,第二位是实际数字。很困惑。

1 个答案:

答案 0 :(得分:0)

我假设你被教导如何使用8位表示浮点数,因为用较小的数字进行数学计算要容易得多;但是,你只能用8位表示这么多的数字(确切地说是256个不同的数字)。

正如您所说,您了解了浮点数如何与8位一起工作。

SEEEENNN - 其中s是符号位,E是指数,N是数字/有效位

数字的符号只是-1到符号位

指数是表示为有符号整数或无符号整数的代表性投注减去表示偏差

有效数是1 + SUM i = 1到p N [i] * 2 ^( - i)其中p是有效数的位数/精度的精度

该值可以计算为: -1 ^ S * 2 ^(指数)*有效数

作为一个更具体的例子(指数偏差为2 ^(4-1)-1 = 7)

0 1000 101

s = 0
exponent = 8 - 7 = 1
significand = 1 + 0.5 * 1 + 0.25 * 0 + 0.125 * 1 = 1.625
value = (-1)^0 + 1.625 * 2^1 = 3.25

相同的表示方案可以应用于任意数量的位。在这方面,选择值8或32是相当随意的。

通常选择32位和64位来表示二进制格式的浮点数,因为它们是2的幂,容易存储在存储器中(整数个字节),计算机ALU设计用于32 / 64位数字。

在C中,浮点数为32位,双精度数为64位。

您可以阅读有关IEEE-754浮点表示的更多信息。维基百科对其工作方式有很好的解释here.