assembly - 如何解释尾数中的隐藏位?MIPS 代码 IEEE-754
问题描述
这是我只打印浮点尾数的代码。存储在 $t1 中的值是值 0xBEDCFFFF,它的尾数为 10111001111111111111111。我的代码在开头没有打印这个值。我如何编写子句以在必要时输入隐藏位 1 或 0?
li $t4, 1 # Reset counters
li $t3, 23
mantloop: # Loop to mask and print each bit
ble $t3, $t4, finish # escape clause
subi $t3, $t3, 1 # subtract from the counter
srl $t2, $t2, 1 # shifting mask
and $t0, $t1, $t2 # ANDing registers
bnez $t0, printOneee # Print one or zero
printZerooo:
li $v0, 1
li $a0, 0
syscall
j mantloop # loop reset
printOneee:
li $v0, 1
li $a0, 1
syscall
j mantloop # loop reset
finish: # method complete
解决方案
目前尚不清楚您所说的“帐户”是什么意思。如果要打印 IEEE754 浮点数的二进制表示,则隐含位不是其中的一部分。
如果你想要尾数表示的实际值,你需要知道指数。
对于非正规数,尾数的隐式前导位为 0(当指数字段为零时)。否则,隐含位为 1。
https://en.wikipedia.org/wiki/Single-precision_floating-point_format。这包括+- 0.0
,由指数=0 尾数=0 表示。
如果您没有任何非规范化,则前导位始终为 1。(但0.0
为此算作次规范化)。
https://www.h-schmidt.net/FloatConverter/IEEE754.html很有用:对于任何输入位模式(十六进制)或十进制值(如 1.234),它分别显示位和指数/尾数。
+- 无穷大由指数=全一,尾数=0 表示。它是无限的,隐含的位并没有真正的意义。
NaN 由指数 = 全一,尾数 = 非零(符号位 = 任一)表示。尾数是 NaN 的“有效载荷”,是任意的。只有谈论实际存在的位才有意义,而不是隐含的位。
推荐阅读
- database - 跨外键 Postgresql
- php - PHP判断单词是否在引号中
- css - 快子中不小的断点周围的混乱
- python - 具有持续时间和多个键的 Python 键记录器
- apache-kafka - Zookeeper 何时更改 Kafka 集群 ID?
- sql - 从实体-属性表中选择两个最常见的属性对?
- mysql - 无法在 Sandbox InnoDB 集群上使用 MySQL 路由器,因为“第 1 行的列‘地址’的数据太长”
- html - 试图使边距不可点击
- go - ok 是什么意思 for 和 if 循环
- c# - 无法从 64 位 C# 应用程序调用 C# 32 位 Com