1. 程式人生 > >有關python 中有符號數 以及 ~1= -2 問題

有關python 中有符號數 以及 ~1= -2 問題

今天寫了示例小程式

print  'a\tb\ta&b\ta|b\ta^b\t~a\t'
for a in range(2):
  for b in range(2):
    print  '%d\t%d\t%d\t%d\t%d\t%d\t'%(a,b,a&b,a|b,a^b,~a)


然後輸出了下,頓時感覺有斯巴達了,注意~a 這個列

a	b	a&b	a|b	a^b	~a	
0	0	0	0	0	-1	
0	1	0	1	1	-1	
1	0	0	1	1	-2	
1	1	1	1	0	-2	

完全不符合人類思維慣性啊

查了下相關站點,總算回憶起大學課程的那些補碼啊 ,有符號數什麼.

原來python預設的是有符號表示數 1的二進位制表示就是00000000  取反之後就是11111111         

符號位從0變成了1,成了一個負數   

補碼錶示真值的方式:除符號位之外的各位取反後加1。11111111除符號位取反後的值為10000000,再加1,便得到10000001,轉換成十進位制,便是-1    

依次類推 ~1=-2 ,~2= -3.... ~n= -(n+1)