今天朋友说,这python里,~2 = -3, ~3 = -4, 特别的奇怪。
我试了下,ruby,c语言里面也同样是如此。
起先是如此
一般来讲  
2  二进制表示就是  00000010 
~2 取反,那就是     11111101
那么 ~2 应该就是   -125
结果却是 -3

然后要重新翻一下c语言的书,可悲啊,基础的东西已经忘成这样了。。。
c语言里面的数字运算使用的是补码,保存的形式也是补码
正数的补码和反码都是一样的
负数的就不是,所以这里11111101是补码,转成原码,就是10000011,就是-3


虽然这是小事,却能告诫我们,这基础的知识还是要劳固。不然太丢了。