微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

二进制补码加法 -48-23.是否有必要使用8位表示形式?

如何解决二进制补码加法 -48-23.是否有必要使用8位表示形式?

我用来解决此问题的方法是,我首先用2s补码形式写两个数字。 为此,我首先将48和23转换为二进制,然后对二进制表示形式进行补充并加1。

48 =(0110000),23 =(0010111){以二进制签名表示)

现在他们的二进制补码是-48 =(1010000),-23 =(1101001)。

现在我只添加它们:

enter image description here

现在在我的教科书中写到,最后一个进位1应该被丢弃。如果我放弃,那我得到错误的答案。如果我使用8位表示法而不是7位,则会得到正确的答案。

所以我的问题是为什么7位表示不能给出正确答案?是否有必要使用某些2 ^ n表示形式?

解决方法

您刚刚遇到的是经典的“溢出”问题。如果只有7位代表一个数字,则“正确答案”是无法表示的,因为它太大而无法容纳7位。当然,在理想情况下,您可能希望保留所有比特以确保您的答案正确,但这受到硬件的限制。这就是确定整数的最大值和最小值的方式(例如,对于32位有符号整数,为2,147,483,647)。

对于某些添加的信息,溢出检查在编程中很常见(在某些高级语言中自动执行,而在其他语言中则为手动),通常情况下,如果要添加两个具有相同符号(正/负)且最终结果相同的数字是相反的符号(因为删除了最高有效位),那么您就知道发生了溢出。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。