正文 第46章 位運算1(2 / 2)

[例124]計算65535&255。

65535的二進製補碼為111111111111111,255的二進製補碼為0000000011111111,65535&255的二進製補碼為00000011111111。

C語言源代碼:

#include

main()

printf("65535&255=%d",65535&255);

運行結果:

65535&255=255

(3)保留指定位

若想保留某個數的指定位,可以通過與另一個數進行按位與來實現,另一個數在相應位取1。

[例125]有一數45,其二進製形式為00101101,想把其從左邊算起的第3、4、5、7、8位保留下來,運算如下:

a=45,b=59

a&b=41

C語言源代碼:

#include

main()

inta=45;

intb=59;

printf("a&b=%d",a&b);

運行結果:

a&b=41

即實現了將數45從左邊算起的第3、4、5、7、8位保留下來。

2.按位或運算符(|)

按位或運算符“|”是雙目運算符,其功能是將參與運算的兩個數按位相或。如果對應的兩個二進位中有一個為1,結果為1,否則為0。其中,參與運算的兩個數均為補碼。

[例126]9|4算式為00001001|00000100。

#include

voidmain()

inta=9,b=4,c;

c=a|b;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

運行結果:

a=9

b=4

c=13

[例127]36(8)|17(8)。

#include

voidmain()

inta=036;

intb=017;

printf("a|b=%o",a|b);

運行結果:

a|b=37(注,結果為八進製)

按位或操作常用來將操作數中某些位置1,其他位保留原值,即mask中特定位置1,其他位為0,計算s=s|mask的值即可。

3.按位異或運算符(^)

按位異或運算符“^”是雙目運算符,其功能是將參與運算的兩數按位相異或,當兩對應的二進位的值不同時,結果為1;兩對應的二進位的值相同時,結果為0。其中,參與運算的操作數以補碼形式出現。

[例128]156^13可寫成算式為10011100^00001101。

#include

voidmain()

inta=156;

a=a^13;

printf("a=%d\n",a);

運行結果:

a=145