【问题标题】:Binary -> Signed Mantissa二进制 -> 有符号尾数
【发布时间】:2013-10-31 01:09:41
【问题描述】:

如何在有符号尾数中写入 0xFA。我将其转换为二进制 = 1111_1010。不知道从这里去哪里。

问题是“如果寄存器文件总共有 8 位宽度,请在有符号尾数中写入以下内容。”

另外,带符号尾数的解释会很棒!

【问题讨论】:

  • 答案可能就在你的教科书里……
  • 我意识到这可能是一个时间敏感的问题,但您介意让我知道发生了什么吗?我的回答有意义吗?如果看不出来,我的代码是用 C# 编写的。
  • 我昨天刚上交硬件,所以解决方案还没有发布。我可以看到你做了什么,但我认为答案要简单得多。我曾写过,考虑到位宽,没有足够的空间容纳带符号的尾数。有部分 a、b、c、d 具有不同的十六进制值。在前导 0 的那些中,我用 1 替换了前导位。这就是我在教授给的笔记中看到的。注释表明,对于带符号的尾数,您将 0 位替换为 1,或者如果空间足够,则添加 1。
  • 这听起来不对...我想看看你的教授认为正确答案是什么。看到后请及时更新。另外,如果我的回答是正确的,请不要忘记接受它:)
  • 解是-122。不知道怎么去……有什么想法吗?

标签: binary hex mantissa


【解决方案1】:

显然,您必须处理的是一个未知类型的数据字节。
为了在有符号尾数中写入一个数字(请参阅Significand),人们会期望您处理浮点类型,例如单精度或双精度。但是,您只有一个字节。

single 是 8 个字节,所以肯定不可能这样,而 double 是双重麻烦。 half 也需要 16 位。唯一合乎逻辑的替代类型是SByte,但在这种情况下,您将永远不会得到任何小数点后有尾数(有效数字)的数字。实际上没有小数。所以也许这是一个技巧问题?

如果你继续假设 SByte,你会得到 -6x10^0

以防万一您需要证明,或者如果您好奇调试期间的外观:

    private void SByte2Dec()
    {   
     sbyte convertsHexToSByte = Convert.ToSByte("0xFA", 16);
     Single yourAnswer = Convert.ToSingle(convertsHexToSByte);
     label1.Text = Convert.ToString(youranswer);
    }

在这个例子中,我有一个 Windows 窗体,上面只有 label1。
然后我把 SByte2Dec();在 InitializeComponent() 下;


  • 解是-122。不知道怎么去……有什么想法吗?

从答案向后工作,很容易看到您的教授做了什么。他假设 MSB 是符号位,其余的被视为 7 位整数。这有一个先例,称为“Signed Magnitude Representation”,但它并未用于现代计算。这些天来,几乎每个人都在使用Two's compliment。

我认为这是一门初学者课程,而不是费尽心思解释二进制的恭维和数据类型,您的教授主要是想把 MSB 作为符号位的观点带回家。如果您掌握了整个符号位并且对现代计算机硬件执行计算的方式一无所知,那么您可能会得出相同的答案。

我的猜测是,你的教授还用一种奇怪的方式来表达这个问题,以便在你尝试用谷歌搜索答案时让你偏离正轨。如果你想让他回来,问他“1000 0000”和“000 0000”有什么区别。此外,如果您或班上的其他任何人回答 -6 并且他算错了,他应该被解雇。那些自学了两个人的恭维的学生应该获得奖励积分。


  • 为什么带符号的尾数是-6?我看到 2 的补码是 -6 但有符号尾数不同?

我读过“Significand”上的wiki article I linked to 吗? 要意识到的重要一点是“有符号尾数”不是一种数据类型。然而,在 IEEE 标准被广泛采用之前,有(曾经?)许多不同的特定于机器的数据类型实现了它们自己的存储浮点数的版本。这些早期的数据类型通常被称为 DFP 或十进制浮点数,而不是二进制浮点数。阅读this paper 以获得更深入的了解。 this paper 也很好地涵盖了这个主题。

正如我之前所说,如果您在互联网上搜索答案,您的教授很可能会使用术语“签名尾数”来让您失望。显然,您应该在字里行间阅读并知道他真正要求的是一种十进制浮点形式,或Signed Magnitude Representation。

“签名尾数”≠二人恭维

“有符号尾数”将被解释为某种形式的十进制浮点数
其中,Two's Compliment 是 Binary Floating Point

的一种形式

【讨论】:

  • 谢谢。前几天他在课堂上复习了一下,说 MSB 是符号位,并将其余位转换为十进制。我们也讨论了 2 的补码,它在问题中作为 a、b、c 部分类型的东西被问到。为什么签名尾数是-6?我看到 2 的补码是 -6 但有符号尾数不同?
  • 顺便说一句 - 我不能接受你的回答;我没有足够的声望点。
  • 啊,我明白了。感谢您的澄清!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
相关资源
最近更新 更多