[例124]計算65535&255。
65535的二進製補碼為111111111111111,255的二進製補碼為0000000011111111,65535&255的二進製補碼為00000011111111。
C語言源代碼:
#include
main()
{
printf("65535&255=%d",65535&255);
}
運行結果:
65535&255=255
(3)保留指定位
若想保留某個數的指定位,可以通過與另一個數進行按位與來實現,另一個數在相應位取1。
[例125]有一數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。其中,參與運算的兩個數均為補碼。
[例126]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
[例127]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。其中,參與運算的操作數以補碼形式出現。
[例128]156^13可寫成算式為10011100^00001101。
#include
voidmain()
{
inta=156;
a=a^13;
printf("a=%d\n",a);
}
運行結果:
a=145