Math 什么是2';补码是多少?

Math 什么是2';补码是多少?,math,language-agnostic,numbers,twos-complement,number-systems,Math,Language Agnostic,Numbers,Twos Complement,Number Systems,2的补码是多少? 为什么我们要取1的补码并加上1?为什么不在取1的补码后减去1呢? 计算机为什么使用2的补码?什么是2的补码数? 互补数制用于表示负数。所以 2的补码系统用于表示负数 更新 Q: What “2’s Complement System” says? A:二进制数的负等价物是其2的补码。(1的补码+1) 注:需要额外1位来表示数字的符号。MSB(最高有效位)用作符号位。如果MSB为0,则该数字为正数。如果MSB为1,则该数字为负数 1’s Complement Value

2的补码是多少?
为什么我们要取1的补码并加上1?为什么不在取1的补码后减去1呢?

计算机为什么使用2的补码?

什么是2的补码数?

互补数制用于表示负数。所以 2的补码系统用于表示负数

更新

Q:  What “2’s Complement System” says?
A:二进制数的负等价物是其2的补码。(1的补码+
1)

注:需要额外1位来表示数字的符号。MSB(最高有效位)用作符号位。如果MSB为0,则该数字为正数。如果MSB为1,则该数字为负数

1’s Complement  Value   2’s Complement
    011         +3          011
    010         +2          010
    001         +1          001
    000         +0          000
    111         -0          000
    110         -1          111
    101         -2          110
    100         -3          101
                -4          100

How '100' (3 bits) is -4?
MSB用作符号,如果为1,则为负,如果为0,则为正

-1 * 2^2 + 0*2^1 + 0*2^0 = -4 + 0 + 0 = -4
类似地,101(3位)是-3

意见:

•   In 1’s complement, using 3 bits, we represented 2^3 = 8 numbers i.e from -3 to +3.
•   In 1’s complement, -0 and +0 are having 2 representation. (+0 is ‘000’ and -0 is ‘111’).
    But mathematically +0 and -0 are same.
•   In 2’s complement, using 3 bits, we represented only 2^3 = 8 numbers i.e from -4 to +3.
•   In 2’s complement, -0 and +0 are having same representation.
•   Since +0 and -0 in 2’s complement is having same representation, 
    we are left out with one more combination which is ‘100’ = -4.
为什么我们要取1的补码并加上1?为什么不在取1的补码后减去1?

请参阅下面链接中的“为什么反转和添加一个有效”主题。如果 我开始解释,这篇文章会越来越大。

计算机为什么使用2'补码?

  • 因为硬件更少。如果计算机使用2'补码方式, 它使用加法电路进行减法运算。所以,减少硬件
  • 如上例所示,+0和-0具有相同的表示形式。(1的补码和符号大小表示有两种不同的+0和-0表示)
  • (不重要)您将能够使用2的补码表示一个额外的数字。(在上面的示例中,its-4是使用3位的二进制“100”)
    • 来自维基百科:

      两位补码系统的优点是,加法、减法和乘法的基本算术运算与无符号二进制数的基本算术运算相同(只要输入以相同的位数表示,并且超出这些位数的任何溢出都将从结果中丢弃)。该特性使系统实现起来更简单,并且能够轻松处理更高精度的算法。此外,零只有一个单一的表示,排除了负零的微妙之处,负零存在于一个人的补语系统中


      我们使用两个补码而不是一个补码的原因是为了使算术尽可能简单

      考虑一下,在一个人的补码中,
      1111111
      0000 0000
      是同一个数-减去一,我们得到了相同的数。这是一个非常痛苦的问题,我们不必去想-所以我们使用2的补码,其中
      1111111
      是-1-通过减去1,我们成功地减去了1。万岁


      (第二个优点是,我们可以在两个补语中表示一个唯一的数字,而不是在一个补码中——在两个补码中128到127,而不是一个补码- 127到+127。)< /P>这是如何与C或C++相关的?你到底在寻找这个吗?或者试着用谷歌搜索?因为使用简单的数字和1的补码进行分离需要携带机制,而这种机制不足以在硬件上实现,使用2的补码,你可以像加法一样减去数字,你的问题是不合适的,因为你想问的问题在互联网上都有答案。你显然没有搜索。我投票决定结束。欢迎来到堆栈溢出。请尽快阅读这篇文章。这个问题的问题是:(1)它很容易通过谷歌搜索,(2)它以前被问过并回答过,(3)你在问问题之前似乎没有花太多精力去寻找答案。所有这些特性都会导致堆栈溢出的居民产生负面反应。+1参考非常好。

      •   In 1’s complement, using 3 bits, we represented 2^3 = 8 numbers i.e from -3 to +3.
      •   In 1’s complement, -0 and +0 are having 2 representation. (+0 is ‘000’ and -0 is ‘111’).
          But mathematically +0 and -0 are same.
      •   In 2’s complement, using 3 bits, we represented only 2^3 = 8 numbers i.e from -4 to +3.
      •   In 2’s complement, -0 and +0 are having same representation.
      •   Since +0 and -0 in 2’s complement is having same representation, 
          we are left out with one more combination which is ‘100’ = -4.