assembly - 从 5 位浮点表示计算值

标签 assembly floating-point binary ieee mantissa

我已经在这方面做了很多工作,并且认为我遗漏了有关“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吗?如果是这样,为什么?

感谢任何人可以提供的帮助或教导!

最佳答案

  1. 指数通常计算为“指数”字段的值(我们称之为“ex”)减去偏差,这使得我们只能在指数字段中保留非负数。但是,可能有一个异常(exception),请参见下文。

  2. 尾数通常在存储时不带前导 1,这是隐式的。情况不一定如此(例如 long double 明确保留前导),但节省空间是有意义的,并且还意味着您拥有唯一的值表示。

  3. 如果尾数不存储前导 1,则非规范化数有一种特殊情况,即指数字段全为零时。在这种情况下,没有隐含的 1,并且为了使转换单调,最小可能的指数是,正如您所说的那样,1 − ex .

  4. 有效数是 0.01b,即 1/4。由于该数字是非正规数,因此没有前导 1,因此实际尾数为 1/4。指数为零(即 1 −  1 ),因此该数字的总值为 1/4。

关于assembly - 从 5 位浮点表示计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19287816/

相关文章:

c++ - 如何检查一个巨大的 float 是否是一个整数?

math - 区分一个 2 的补码负数和相应的正数

c - Strsep 在我的 Mac OS X x86_64 系统上返回 32 位指针

assembly - 反汇编时如何对二进制arm指令进行分类

assembly - REP 指令是否被视为向量运算?

c - 用 C 制作一个小的 mach-o 可执行文件

c - 打印在两边最多 float 四个位置

c++ - 为什么mpfr_printf与printf的十六进制 float (%a转换说明符)不同?

java - 二叉树递归PrintInOrder函数

java - 将 String 中提供的十进制数转换为二进制数