1

有人可以解释为什么

select ~1

给出结果

-2

也许我有很多东西要了解数字类型的实际位。你会推荐什么资源?

4

3 回答 3

6

问:有人能解释一下为什么 select ~1 给出的结果是 -2 吗?

答:出于同样的原因 ~0 会给出 -1 :)

这是一篇关于“二进制补码”算术的好文章:

大多数 CPU 架构都是二进制补码(相对于一个补码)。来自同一篇文章:

二进制补码是最容易在硬件中实现的,这可能是其广泛流行的最终原因[需要引用]。早期大型机上的处理器通常由数千个晶体管组成——消除大量晶体管可以显着节省成本。早期基于集成电路的 CPU(Intel 8080 等)的架构师选择使用二进制补码数学。随着IC技术的进步,几乎都采用了二进制补码技术。英特尔、AMD 和 Power Architecture 芯片都是互补的。

于 2013-04-29T19:21:57.810 回答
5

如果你想按位不做二进制(是/否);然后首先将数据转换为 BIT,然后按位应用。

SELECT ~CAST( 1 AS BIT)

给出结果

0

由于 BIT 只有三个值:0、1 和 NULL,它总是会从 0 反转到 1 或 1 到 0。~NULL 将始终以 NULL 结束。

于 2013-05-14T09:02:08.530 回答
4

您应该阅读有关 Two's Complement ( http://en.wikipedia.org/wiki/Two's_complement )的信息

二进制中的 +1 表示为00000001,其逆是11111110,即二进制补码中的 -2

于 2013-04-29T19:22:17.667 回答