C語言位運算

2021-06-28 17:00:23 字數 1736 閱讀 1581

c語言位運算

位運算應用口訣

清零取反要用與,某位置一可用或

若要取反和交換,輕輕鬆鬆用異或

移位運算

1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。

2 」 < am

p;3"

amp;>amp;>amp;qu

ot;右

移:右邊

的位被擠

掉。對於

左邊移出

的空位,

如果是正

數則空位

補0,若

為負數,

可能補0

或補1,

這取決於

所用的計

算機系統

。4「 amp;>amp;>amp;>amp;

quot;運算子,右邊的位被擠掉,對於左邊移出的空位一概補上0。   

位運算子的應用 (源運算元s 掩碼mask)   

(1) 按位與– &   

1 清零特定位 (mask中特定位置0,其它位為1,s=s&mask)   

2 取某數中指定位 (mask中特定位置1,其它位為0,s=s&mask)   

(2) 按位或– |   

常用來將源運算元某些位置1,其它位不變。 (mask中特定位置1,其它位為0 s=s |mask)   

(3) 位異或– ^   

1 使特定位的值取反 (mask中特定位置1,其它位為0 s=s^mask)   

2 不引入第三變數,交換兩個變數的值 (設 a=a1,b=b1)   

目 標          操 作              操作後狀態   

a=a1^b1        a=a^b              a=a1^b1,b=b1   

b=a1^b1^b1      b=a^b              a=a1^b1,b=a1   

a=b1^a1^a1      a=a^b              a=b1,b=a1   

二進位制補碼運算公式:   

-x = ~x + 1 = ~(x-1)   

~x = -x-1   

-(~x) = x+1   

~(-x) = x-1   

x+y = x - ~y - 1 = (x |y)+(x&y)   

x-y = x + ~y + 1 = (x |~y)-(~x&y)   

x^y = (x |y)-(x&y)   

x |y = (x&~y)+y   

x&y = (~x |y)-~x   

x==y:    ~(x-y |y-x)   

x!=y:    x-y |y-x   

x < y:    (x-y)^((x^y)&((x-y)^x))   

x <=y:    (x |~y)&((x^y) |~(y-x))   

x < y:    (~x&y) |((~x |y)&(x-y))//無符號x,y比較   

x <=y:    (~x |y)&((x^y) |~(y-x))//無符號x,y比較   

應用舉例   

(1) 判斷int型變數a是奇數還是偶數  

a&1  = 0 偶數   

a&1 =  1 奇數   

(2) 取int型變數a的第k位 (k=0,1,2……sizeof(int)),即a

amp;>amp;$gt;k&1

(3) 將int型變數a的第k位清0,即a=a&~(1 <

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...

C語言位運算

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...

C語言位運算

按位左移 左移 原值 1101 左移2位後為110100 2 5 2 4 2 2 32 16 4 52 按位與 同為1 則為1,否則為0 按位或 有1則為1,否則為0 按位亦或 相同為0,不同位1 按位取反 一元運算子 int c 2 0010 int d 10 1010 按位與 同為1 則為1,否...