首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >评估0xfb-0xfa

评估0xfb-0xfa
EN

Stack Overflow用户
提问于 2019-02-05 04:15:22
回答 1查看 65关注 0票数 0
代码语言:javascript
复制
0xfb-0xfa

我首先转到二进制

代码语言:javascript
复制
0xfb=11111011

0xfa=11111010

-0xfa=00000101+1=00000110

现在11111011+00000110=100000001是下溢的,但它肯定是不正确的,我哪里弄错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 05:46:44

目前还不清楚最初的数字是有符号的还是无符号的。结果将是相同的,但推理略有不同。

假设您的初始数字是无符号的,则初始转换是不正确的。当以二进制编码为无符号时,您的数据是8位。如果你想在不截断的情况下将它们转换成2补码,你需要额外的比特。所以

代码语言:javascript
复制
+0xfb = 0 11111011
+0xfa = 0 11111010
-0xfa = 1 00000110

现在我们可以计算加法了

代码语言:javascript
复制
        (1)
  0xfb     0 11111011
 -0xfa   + 1 00000110
           ----------
           0 00000001   

我们可以注意到没有溢出。有一个进位,但我们可以在2s补码中忽略它。并且正数和负数的和不能溢出。

现在,由于两个MSB相等,结果可以缩短为8位,从而得到明显的结果1。

如果初始数字是有符号的,那么你的计算大部分是正确的。所有的运算都可以在8位上完成。结果将在8位上。

代码语言:javascript
复制
        (1)
  0xfb     11111011
 -0xfa   + 00000110
           ----------
           00000001   

有进位,但没有溢出或下溢。结果是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54523694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档