有人可以解释原因吗
select ~1
给出结果
-2
也许我有很多东西需要了解数字类型的实际位数。你会推荐什么资源?
答案 0 :(得分:6)
问:有人可以解释为什么选择〜1给出结果-2?
答:出于同样的原因〜0会给-1:)
这是一篇关于“二进制补码”算法的好文章:
大多数CPU架构都是两个补码(相对于一个补码)。来自同一篇文章:
两个补码是最容易在硬件中实现的,可能是 广受欢迎的最终原因[引证需要]。 早期大型机上的处理器通常由数千个处理器组成 晶体管 - 消除大量晶体管是一个 显着节省成本。早期集成的架构师 基于电路的CPU(Intel 8080等)选择使用两个补码 数学。随着IC技术的进步,几乎所有人都采用了两种技术 补充技术。英特尔,AMD和Power Architecture芯片是 所有两个补充。
答案 1 :(得分:4)
您应该阅读有关Two's Complement(http://en.wikipedia.org/wiki/Two's_complement)
的内容 二进制中的 +1表示为00000001
,其反函数为11111110
,在二进制补码中为-2
答案 2 :(得分:3)
如果你想按位进行二进制(是/否);然后首先将数据转换为BIT,然后逐位应用。
SELECT ~CAST( 1 AS BIT)
给出结果
0
由于BIT只有三个值:0,1和NULL,它总是从0到1或1到0反转。 ~NULL总是以NULL结尾。