如何在签名的尾数中写入0xFA。我把它转换成二进制= 1111_1010。不知道从哪里开始。
问题是“如果寄存器文件的总宽度为8位,请在带符号的尾数中写下以下内容。”
另外,签名尾数的解释会很棒!
答案 0 :(得分:0)
所以你需要处理的是显然是一个未知类型的数据字节 为了在带符号的尾数中写一个数字(参见Significand),人们会期望你处理一个浮点类型,如single或double。但是你只有一个字节。
A 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);
}
在这个例子中,我有一个窗口表单,上面只有label1 然后我把SByte2Dec();在InitializeComponent();
下从答案开始倒退,很容易看出你的教授做了什么。他假设MSB是符号位,其余部分被视为7位整数。有一个先例,称为“Signed Magnitude Representation”,但它并没有用于现代计算。这些天几乎每个人都在使用Two's compliment。
我认为这是一个初学者课程而不是去解释两个恭维和数据类型的麻烦,而你的教授主要是试图将MSB作为一个符号位。如果你得到了整个符号,并且对现代计算机硬件执行计算的方式一无所知,那么你可能会得到相同的答案。
我的猜测是,你的教授也会以一种奇怪的方式对问题进行措辞,以便在你尝试谷歌答案时将你抛弃。如果你想让他回来,问他“1000 0000”和“000 0000”之间的区别是什么。此外,如果你或班上的任何人回答-6并且他认为错了,他应该被解雇。这些学生应该获得奖励积分,教他们自己两个人的称赞。
我读过有关“有效”的wiki article I linked to吗? 要认识到的重要一点是“签名尾数”不是数据类型。但是,有许多不同的机器特定数据类型在IEEE标准被广泛采用之前实现了它们自己的存储浮点数的版本。这些早期数据类型通常称为 DFP 或十进制浮点数,而不是二进制浮点数。阅读this paper并获得更深入的了解。 this paper也很好地涵盖了这个主题。
正如我之前所说,如果您在互联网上搜索答案,您的教授很可能会使用术语“签名的尾数”来推迟您。显然你应该在各行之间阅读并知道他真正要求的是一种十进制浮点形式,或Signed Magnitude Representation。
“签名尾数”≠两个赞美
“签名尾数”将被解释为某种形式的十进制浮点
其中,Two's Compliment是二进制浮点