【问题标题】:NOT or compliment of a number?不是或恭维一个数字?
【发布时间】:2013-06-20 22:55:56
【问题描述】:

假设:2 的补码,整数。 只是一个快速的问题。为什么如果a有一个数字,并取它的NOT,它会等于负+或- 1。例如:

553481923
~553481923 = -553481924
2147455726
~2147455726 = -2147455727
-2147455725
~-2147455725 =2147455724

我知道位是倒置的。发生这种情况是否有任何原因,或者这只是巧合。

【问题讨论】:

    标签: binary logic boolean-logic


    【解决方案1】:

    这是因为 2 的补码符号的工作方式。

    2的补码整数范围为(-2^31) to (2^31 - 1)

    以 2 的补码 8 位值为例:

    0000 0000 = 0 (base 10)
    

    和 2 的补码负 8 位值:

    1111 1111 = -1 (base 10)
    

    【讨论】:

      【解决方案2】:

      这是因为您可以在 2 的补码系统中表示一个额外的负值,因为 00000000 为零。这意味着在您可以表达的所有正数中(最多01111111),您仍然会多出一位。另一方面,您得到10000000 作为负数。 (我一直在使用字节,但这适用于任何长度的单词。)

      https://stackoverflow.com/a/1049774/691859

      【讨论】:

        猜你喜欢
        • 2019-01-06
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 2020-07-25
        • 2016-09-26
        相关资源
        最近更新 更多