最近經(jīng)常碰到位運(yùn)算,現(xiàn)對常見的位運(yùn)算總結(jié)如下:
1、位移運(yùn)算符
>>:稱為按位右移運(yùn)算符,將左邊數(shù)的二進(jìn)制按位向右移指定的位數(shù)。
<<:稱為按位左移運(yùn)算符,將左邊數(shù)的二進(jìn)制按位向左移指定的位數(shù)。
位移運(yùn)算符作用于其左側(cè)的變量,其右側(cè)的表達(dá)式的值是移動的位數(shù),運(yùn)算結(jié)果是移動后的變量結(jié)果。
例如:
b=a<<2,a的值左移兩位并賦值給b,而a本身的值不改變。
向左移位在低位上補(bǔ)0,向右移位在高位上補(bǔ)0。右移時可以保持結(jié)果的符號位,也就是右移時,如果最高位為1,是符號位,則補(bǔ)1而不是補(bǔ)0。
右移運(yùn)算符常常用來實現(xiàn)整數(shù)除法運(yùn)算,左移運(yùn)算符用來實現(xiàn)整數(shù)乘法運(yùn)算。其中用來實現(xiàn)乘法和除法的因子必須是2的冪次。
2、位邏輯運(yùn)算符
&:稱為按位與運(yùn)算符,兩個位都為1時,結(jié)果為1,否則為0。
|:稱為按位或運(yùn)算符,只要其中有一個為1,則結(jié)果為1,否則為0。
^:按位異或運(yùn)算符,兩個位不相同時,結(jié)果為1,否則為0。
~:按位補(bǔ)運(yùn)算符,這是一個單目運(yùn)算符,當(dāng)為1時結(jié)果為0,當(dāng)為0時結(jié)果為1。
以上屬于按位邏輯運(yùn)算符,只能用于整型表達(dá)式。通常用于對整型變量進(jìn)行位的設(shè)置、清零、取反、以及對某些選定的位進(jìn)行檢測。
例如:
設(shè)置第4位為1,而其他位保持不變,可以使用按位邏輯或運(yùn)算
a = a | 0x08,
a與00001000做或運(yùn)算之后,a的第4位被設(shè)置為1,而其他位不變
要設(shè)置其他位為1,做法類似.改變或值即可.
又如:
設(shè)置第4位為0,而其他位保持不變,可以使用按位邏輯與運(yùn)算
a = a & 0xF7,
a與11110111做與運(yùn)算之后,a的第4位被設(shè)置為0,而其他位不變
要設(shè)置其他位為0,做法類似.改變與值即可.
新聞熱點(diǎn)
疑難解答
圖片精選