3 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
因?yàn)?,True的默認(rèn)值為1
把True取反,也就是把1取反
因?yàn)閜ython默認(rèn)的是有符號表示數(shù)
1的二進(jìn)制表示就是00000001
各位取反之后就是11111110
可見,取反之后,符號位從0變成了1,成了一個(gè)負(fù)數(shù)
而已1作為符號位開頭,計(jì)算機(jī)會(huì)將其識別為補(bǔ)碼
因?yàn)樨?fù)數(shù)在機(jī)器中是以補(bǔ)碼表示、補(bǔ)碼轉(zhuǎn)換真值的方式為補(bǔ)碼的數(shù)值位,也就是除符號位之外的各位取反后加1。11111110除符號位取反后的值為10000001,再加1,便得到10000010,轉(zhuǎn)換成十進(jìn)制,便是-2

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
不會(huì)啊。False是0,True是非0。所有非0,包括-2都是True
在你這個(gè)試?yán)颰rue為1,所以~1就等于-2
~1取反后是-2
~0等于-1,
添加回答
舉報(bào)
0/150
提交
取消