算法:位運(yùn)算
?十進(jìn)制:逢十進(jìn)一椭迎,生活中常見的數(shù)字锐帜。
二進(jìn)制:逢二進(jìn)一,計(jì)算機(jī)系統(tǒng)使用的數(shù)制畜号,只有0缴阎、1。
八進(jìn)制:逢八進(jìn)一简软,采用0蛮拔,1,2替饿,3语泽,4,5视卢,6,7八個(gè)數(shù)字廊驼。在編程語言中通常以數(shù)字0開頭表示八進(jìn)制數(shù)
十六進(jìn)制:逢十六進(jìn)一据过,采用0,1妒挎,2绳锅,3,4酝掩,5鳞芙,6,7期虾,8原朝,9,A镶苞,B喳坠,C,D茂蚓,E壕鹉,F(xiàn) 十六個(gè)數(shù)字。A-F表示 10-15聋涨,在編程語言中常用0x開頭表示晾浴。
-
按位或 "|"
3 0011 10 1010 = 11 1011
-
按位與 "&"
3 0011 10 1010 = 2 0010 -
判斷奇偶
(0111)
(0110)
可見 偶數(shù)末位都是0,奇數(shù)末位都是1牍白。當(dāng) 13&1=0001=1脊凰。便為奇數(shù),反之=0000淹朋,便為偶數(shù)
6
-
-
按位異或 "^"
3 0011 10 1010 = 9 1001 -
按位取反 "~"
即 將內(nèi)存中的補(bǔ)碼按位取反笙各,包括符號(hào)位钉答。
補(bǔ)碼計(jì)算法定義:非負(fù)數(shù)的補(bǔ)碼是其原碼本身;負(fù)數(shù)的補(bǔ)碼是其絕對(duì)值的原碼最高位符號(hào)位不變杈抢,其它位取反数尿,再加1。
-
例如正數(shù):9
二進(jìn)制: 0 1001
補(bǔ)碼: 0 1001
按位取反: 1 0110 (符號(hào)位一起進(jìn)行取反,補(bǔ)碼的取反)
減1得反碼: 1 0101
轉(zhuǎn)原碼惶楼。 1 1010 (反碼取反就是原碼)
=-10
-
例如負(fù)數(shù):-9
- 二進(jìn)制:1 1001
- 反碼: 1 0110 (符號(hào)位不變右蹦,取反)
- 補(bǔ)碼: 1 0111 (符號(hào)位不變,末位+1)
- 補(bǔ)碼取反: 0 1000 (符號(hào)位一起取反)
- 轉(zhuǎn)原碼歼捐。 正數(shù)的補(bǔ)碼何陆,反碼,原碼都是一樣的豹储。
- =10
所有正整數(shù)的按位取反都是其本身+1的負(fù)數(shù)贷盲。 ~8=-9
所有負(fù)整數(shù)的按位取反都是其本身+1的絕對(duì)值。 ~-8=9
0的按位取反是-1剥扣。0不是正負(fù)數(shù)哦
-
位移(左/右移)">> <<"
9>>1 右移1 0000 1001 0000 0100 = 4 9<<1 左移1 0000 1001 0001 0010 = 18