按位取反運(yùn)算符:~
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的牙克石網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
運(yùn)算結(jié)果:~x=-(x+1)
例如:~9為-10
~(-9)為8
這不是按位取反嗎?怎么結(jié)果是這樣?
看下面。
轉(zhuǎn)二進(jìn)制:0 1001
計(jì)算補(bǔ)碼:0 1001
要知道它所表達(dá)的數(shù)是多少,需要轉(zhuǎn)換為原碼
_____
轉(zhuǎn)為原碼:按位取反:1 1001
末位加一:1 1010
符號(hào)位為1是負(fù)數(shù),即-10
轉(zhuǎn)二進(jìn)制:1 1001
計(jì)算補(bǔ)碼:1 0111
要知道它所表達(dá)的數(shù)是多少,需要轉(zhuǎn)換為原碼____
轉(zhuǎn)為原碼:正數(shù)的補(bǔ)碼和原碼相同,仍為:0 1000,即8
在使用python數(shù)組時(shí),可以根據(jù)一個(gè)相同長(zhǎng)度的bool數(shù)組來(lái)做切片,比如:
但有時(shí)候我們想要反轉(zhuǎn)這個(gè)索引,取出數(shù)組內(nèi)其他元素該怎么辦呢?
當(dāng)然要把索引列表內(nèi)的True變成False,F(xiàn)alse變成True。而python中not只能作用在標(biāo)量上,而不能作用在數(shù)組上。
聯(lián)想到True對(duì)應(yīng)1,F(xiàn)alse對(duì)應(yīng)0,那是否可以這么做:
結(jié)果是不行:
因?yàn)槭褂?-index后得到的是包含0和1的數(shù)組,據(jù)此做切片只能得到對(duì)應(yīng)0和1索引處的元素。
真難?。。?!orz
噫 這時(shí)再回顧一個(gè)前面的操作,考慮到True/False和1/0的對(duì)應(yīng)關(guān)系,我們把True和False是轉(zhuǎn)換成了1和0,從bool類型的角度,我們實(shí)現(xiàn)了True變成False和False變成True的目標(biāo),但是從數(shù)據(jù)類型上看,并沒(méi)有做到,最終用的0和1表示。
數(shù)據(jù)類型?。。?!
也就是結(jié)果只是數(shù)據(jù)類型不同,那轉(zhuǎn)換下就好了:
python 3的整型以16bit遞增。
0xf0 =0b 0000 0000 1111 0000
~0xf0之后得到1111 1111?0000 1111
[1][111 1111?0000 1111]
確定是負(fù)數(shù),有負(fù)數(shù)等于絕對(duì)值反碼加一。求補(bǔ)碼形式。
絕對(duì)值減1得:111 1111?0000 1110
反碼得:000 0000 1111 0001
得-0xf1即-241(你那的~a[0]得-241)
要求得到[0,256),限定一下范圍即可。
(~a[0])0xff
15