首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否存在正数的2表示?

是否存在正数的2表示?
EN

Stack Overflow用户
提问于 2019-07-13 23:25:06
回答 1查看 149关注 0票数 0

案例1:

让我试着用4位来表示2的补码中的-7:

7,二进制: 0111

1中的7补码:1000

7加2的补码:1001

所以把我的2的数字转换成十进制:-1x2^3+0+0+1x2^0

代码语言:javascript
复制
                                    => -8+1=-7 its correct !!!  

案例2:

让我试着用4位来表示2的补码中的7:

二进制:-7 \f25 1111 -7

1中的7补码:1000

7加2的补码:1001

所以把我的2的数字转换成十进制:-1x2^3+0+0+1x2^0

代码语言:javascript
复制
                                    => -8+1=-7

仍然是-7,我错了!

EN

回答 1

Stack Overflow用户

发布于 2019-07-14 01:02:25

你稍微混淆了一些概念-

最高有效位(最高有效位)表示数字的符号。其中0代表积极,1代表消极。此外,MSB不参与数字转换(如果它代表符号)。

因此,二进制形式的-71111而不是0111

现在,要对二进制数进行加、减、除、乘运算,我们可以在MSB中使用有符号数,然后定义一组新的规则来获得正确的结果。

使用complements方法来做这件事。

计算一个数的二的补数

  1. 反转所有位(0111) -> (1000 )
  2. 将结果(1000+ 1) -> (1001)

加1

+7 -> 0111 (+) -7 -> 1001 (2s complement) ...................... 0 -> 10000 (ignoring the carry over MSB we will get zero which is the correct answer)

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

https://stackoverflow.com/questions/57020458

复制
相关文章

相似问题

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