Binary 如何将9和-10相减为2';补语是什么?

Binary 如何将9和-10相减为2';补语是什么?,binary,twos-complement,Binary,Twos Complement,有人能告诉我在9和-10之后2的补码是怎么做的吗 对于9二进制值=1001 对于10二进制值=1010 取-10的两个补码=0110 9=1001和-10=0110最后是1111=15 但是答案将是-1,简短的答案是-10不能用4位有符号整数来表示。您会得到一个溢出-注意0110的符号位是0!(9也是如此-注意符号位是1。) 真正的答案是,如果您手动执行此操作,则需要分配足够大的缓冲区来处理输入(和输出)。例如,如果使用8位,则应该清楚发生了什么: 9=00001001 -10=对000010

有人能告诉我在9和-10之后2的补码是怎么做的吗

对于
9
二进制值=
1001

对于
10
二进制值=
1010

取-10的两个补码=
0110

9=
1001
和-10=
0110
最后是
1111
=<代码>15


但是答案将是-1,简短的答案是-10不能用4位有符号整数来表示。您会得到一个溢出-注意
0110
的符号位是0!(9也是如此-注意符号位是1。)

真正的答案是,如果您手动执行此操作,则需要分配足够大的缓冲区来处理输入(和输出)。例如,如果使用8位,则应该清楚发生了什么:

  • 9=
    00001001
  • -10=对
    00001010
    =
    11110101
    +
    00000001
    =
    11110110
  • 00001001
    +
    11110110
    =
    11111111
    =-1

现在,如果忽略溢出,那么数学背后的逻辑仍然有效:

1111
对于4位有符号整数不是15。符号位(最高有效位)是1,表示它是负数,因此需要将其解释为2的恭维负数,在本例中为-1

请注意,
1111
对于4位无符号整数以及较大的有符号整数(实际上是
00…01111
且符号位为0)为15

有趣的是,如果您将相同的数字解释为无符号,那么数学仍然有效。这就是两个人的赞美之美:

  • 二进制:
    1001
    +
    0110
    =
    1111
  • 已签名(溢出):
    9
    (!)+
    -10
    (!)=
    -1
  • 未签名:
    9
    +
    6
    =
    15
  • 签名(正确):
    -7
    +
    6
    =
    -1

因此,您必须在整个操作/计划中保持一致性。在你的陈述“9=1001和-10=0110最后是1111.=15”中,你将带符号的解释(-10=
0110
)-当然忽略溢出-与无符号的解释(
1111
=15)混合在一起,这导致了错误。

简短的回答是-10不能用4位带符号的整数表示。您会得到一个溢出-注意
0110
的符号位是0!(9也是如此-注意符号位是1。)

真正的答案是,如果您手动执行此操作,则需要分配足够大的缓冲区来处理输入(和输出)。例如,如果使用8位,则应该清楚发生了什么:

  • 9=
    00001001
  • -10=对
    00001010
    =
    11110101
    +
    00000001
    =
    11110110
  • 00001001
    +
    11110110
    =
    11111111
    =-1

现在,如果忽略溢出,那么数学背后的逻辑仍然有效:

1111
对于4位有符号整数不是15。符号位(最高有效位)是1,表示它是负数,因此需要将其解释为2的恭维负数,在本例中为-1

请注意,
1111
对于4位无符号整数以及较大的有符号整数(实际上是
00…01111
且符号位为0)为15

有趣的是,如果您将相同的数字解释为无符号,那么数学仍然有效。这就是两个人的赞美之美:

  • 二进制:
    1001
    +
    0110
    =
    1111
  • 已签名(溢出):
    9
    (!)+
    -10
    (!)=
    -1
  • 未签名:
    9
    +
    6
    =
    15
  • 签名(正确):
    -7
    +
    6
    =
    -1

因此,您必须在整个操作/计划中保持一致性。在您的语句“9=1001和-10=0110最终为1111.=15”中,您将带符号的解释(-10=
0110
)-当然忽略溢出-与未带符号的解释(
1111
=15)混合在一起,这导致了错误。

结果不正确的主要原因是因为使用了4位数字,您只能表示数字-8到7。如果你想把9和-10写成2的补码,你需要5位(即
01001
10110


然后,
01001
+
10110
=
11111
=-1.

结果不正确的主要原因是,对于4位数字,只能表示数字-8到7。如果你想把9和-10写成2的补码,你需要5位(即
01001
10110


然后,
01001
+
10110
=
11111
=-1.

10110是怎么来的?你能简单地告诉我你得到
0110
的方法吗-10:10=
01010
=-10=
10101
+
1
=
10110
只要倒过来加上1,你能不能简单地告诉我你在-10:10=
01010
=>-10=
10101
=
+
1
=
10110
中得到的相同方法,只需反转并添加1,和往常一样,这是两个补语。谢谢你给我一个很好的解释,如果这有助于解决问题的话。请同时复习其余的问题,看看你是否能为这些问题选择正确答案。这样做对每个人都有帮助。谢谢你给出一个很好的解释。如果这有助于解决问题,请给出一个很好的解释。请同时复习