今天朋友說,這python裏,~2 = -3, ~3 = -4, 特別的奇怪。
我試了下,ruby,c語言裏面也同樣是如此。
起先是如此
一般來講
2 二進制表示就是 00000010
~2 取反,那就是 11111101
那麼 ~2 應該就是 -125
結果卻是 -3
然後要重新翻一下c語言的書,可悲啊,基礎的東西已經忘成這樣了。。。
c語言裏面的數字運算使用的是補碼,保存的形式也是補碼
正數的補碼和反碼都是一樣的
負數的就不是,所以這裏11111101是補碼,轉成原碼,就是10000011,就是-3
雖然這是小事,卻能告誡我們,這基礎的知識還是要勞固。不然太丟了。