"&" 和"&&" 的區(qū)別嫌佑;
單個(gè)"&",左邊無論真假,右邊都進(jìn)行計(jì)算迅箩。
雙個(gè)"&",左邊為假溉愁,右邊不進(jìn)行計(jì)算。
"|"和"||" 的區(qū)別;
單個(gè)"|",左邊無論真假饲趋,右邊都進(jìn)行計(jì)算拐揭。
雙個(gè)"|",左邊為真,右邊不進(jìn)行計(jì)算奕塑。
"|"和"&" 做位運(yùn)算
二進(jìn)制進(jìn)行|位運(yùn)算堂污,只有0|0時(shí)候?yàn)? ,其他為1龄砰,比如6|5 先把6和5換成二進(jìn)制盟猖。6的二進(jìn)制為110,5的二進(jìn)制為101 那么用位運(yùn)算0|0得0 只要有1得1换棚,算出為111式镐,111換成十進(jìn)制為7,所有6|5等于7
二進(jìn)制進(jìn)行&位運(yùn)算固蚤,只有1&1得1娘汞,其他得0,同理可得6&5算出二進(jìn)制得100夕玩,100換成十進(jìn)制為4
"^"異或運(yùn)算和"~"反碼
任何相同二進(jìn)制異或運(yùn)算都得0你弦,1^1=0,0^0=0,不相同的異或運(yùn)算都得1,1^0=1,0^1=1燎孟。同理6^5的011
那么011的十進(jìn)制是3禽作。提示一個(gè)數(shù)異或兩次變回本身。比如6^5^5的 110缤弦,101领迈,101。先得011碍沐,再得110所有又變回原來的數(shù)值狸捅,此技巧可以用來轉(zhuǎn)換數(shù)值,不需要第3個(gè)變量即可兩個(gè)變量值互轉(zhuǎn)累提。
反碼:二進(jìn)制進(jìn)行反碼計(jì)算時(shí)尘喝。1變成0,0變成1斋陪。舉例子~6,6的二進(jìn)制是110在機(jī)器上補(bǔ)足32位在110之前補(bǔ)碼0朽褪。那么反碼為111.....001置吓,此時(shí)的反碼減去1得111.....111000,那么原反碼減去相減的碼得到0000....000111此時(shí)的十進(jìn)制為-7那么加上原來減去的1得到-7+1就是~6了缔赠。(這個(gè)我也不是很懂衍锚。大牛們指正下)
"<<"左移">>"右移">>>"無符號(hào)右移
左移:空缺補(bǔ)0,被移除的高位丟棄嗤堰,空缺位補(bǔ)0戴质,比如32位二進(jìn)制 0000....00011左移3位變成了0...00011xxx,則xxx補(bǔ)足000即可。規(guī)律左移是基數(shù)乘以2的移位冪次方踢匣,比如3<<2則是3*2*2也就是3乘以2的2次冪诗轻。
右移:最高位是什么就補(bǔ)什么鄙煤。高位是1補(bǔ)1狡相,是0就補(bǔ)0.,規(guī)律左移是基數(shù)除以2的移位冪次方呀癣,比如3>>1則是3/2也就是3除以2的1次冪。