我已经在这方面做了很多工作,并且认为我遗漏了有关“frac”部分的一些内容。在这个5位 float 中,符号位是最高有效位,接下来的两位是指数,指数偏差为1。最后两位是尾数。
所以我有很多值(value)观,但我只是想更好地理解这个方法。第一个是:
0 00 01
我知道等式是
V = (-1)^s * m * 2^E
符号为零,并且由于数字是非规范化的,因此 E = 1-bias = 0(对吗?)
所以,我有:
V = 1 * m * 1
我遇到的问题是尾数值。我认为对于非标准化数字,它等于 0.frac,而这里的 frac 等于 1,对吗?
那么 m = .1 吗?
我在网上发现了一堆东西,看起来压裂是除以位数的值?
那么也许 m = 1/5?
最后,我被告知我的答案应该表示为 x/4。那么m应该是1/4吗?如果是这样,为什么?
感谢任何人可以提供的帮助或教导!
最佳答案
指数通常计算为“指数”字段的值(我们称之为“
ex
”)减去偏差,这使得我们只能在指数字段中保留非负数。但是,可能有一个异常(exception),请参见下文。尾数通常在存储时不带前导 1,这是隐式的。情况不一定如此(例如
long double
明确保留前导),但节省空间是有意义的,并且还意味着您拥有唯一的值表示。如果尾数不存储前导 1,则非规范化数有一种特殊情况,即指数字段全为零时。在这种情况下,没有隐含的 1,并且为了使转换单调,最小可能的指数是,正如您所说的那样,1 −
ex
.有效数是 0.01b,即 1/4。由于该数字是非正规数,因此没有前导 1,因此实际尾数为 1/4。指数为零(即 1 −
1
),因此该数字的总值为 1/4。
关于assembly - 从 5 位浮点表示计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19287816/