我的工作我的HW计算机架构和我遇到以下问题就来了:

  

A = 247,点击   B = 237

     

1)假设A和B被签名存储在二的补码格式的8位整数。计算A + B使用饱和算法。结果应写在小数。展示你的工作。结果   2)假设A和B被签名存储在两个的compelemnt格式8个整数。计算A - 。使用饱和算法乙

现在,如何这些甚至一个有效的问题吗?我知道饱和算法是什么,但它是如何有效地说,A是247,B为237,当他们不能用8位二进制补码数来表示?

我意识到饱和算术点在一个溢/下溢到所有位设置为极值的情况下,但它并没有任何意义,我问了一连串的问题(还有3本同样的问题)涉及不能在他们指定格式表示的数字运算。

我错了吗?

有帮助吗?

解决方案

这是有意义的唯一解释是,给出的值是在无符号所讨论的数的解释;值大于127,显然超出了范围的8位有符号二进制补码值。我同意的问题是较差但是指出,

其他提示

我不知道,但它的可能的会问:“转换的十进制数237的8位整数现在解释这些位作为8位二进制补码整数,并将它们添加”

有点像说,在C:

char a = 237;
printf("%x %d\n",a, a);

来编译,给你,你会期望基于8位值的2的补解释值“237”

看来我错了。 8位有符号二进制补码整数可以-128和127的任何尝试都分配一个恒定的237或247到8位有符号二进制补变量应该产生一个错误,这取决于你的语言之间。

如果这个问题是“假设A和B都存储在一个8位带符号整数”,那么它会是有意义的。在一个符号的8位整数存储A = 247产生的-9的值,存储B = 237产生的-19的值。否则,它没有任何意义。有符号的8位整数不能有247或237的值

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top