C言語ビット演算



参考資料:http://baike.baidu.com/view/379209.htm
 
   

                (bit)         。C           ,    C                   。

 、    C           :

&    
|    
^     
~   
<<   
>>   


1.             "&"      。                    。            1 ,     1 ,   0。             。

  :9&5      : 00001001 (9      )&00000101 (5      ) 00000001 (1      )  9&5=1。

                0      。   a       0 ,      ,    a&255    ( 255       0000000011111111)。
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d
b=%d
c=%d
",a,b,c); } 2. “|” 。 。 1 , 1。 。 :9|5 : 00001001|00000101 00001101 ( 13) 9|5=13 main(){ int a=9,b=5,c; c=a|b; printf("a=%d
b=%d
c=%d
",a,b,c); } 3. “^” 。 , , 1。 , 9^5 : 00001001^00000101 00001100 ( 12) main(){ int a=9; a=a^15; printf("a=%d
",a); } 4. ~ , 。 。 ~9 : ~(0000000000001001) :1111111111110110 5. “<<” 。 “<< ” , “<<” , , 0。 : a<<4 a 4 。 a=00000011( 3), 4 00110000( 48)。6. “>>” 。 “>> ” ,“>>” 。 : a=15,a>>2 000001111 00000011( 3)。 , , , 。 , 0, , 1, 0 1 。Turbo C 1。 main(){ unsigned a,b; printf("input a number: "); scanf("%d",&a); b=a>>5; b=b&15; printf("a=%d\tb=%d
",a,b); } ! main(){ char a='a',b='b'; int p,c,d; p=a; p=(p<<8)|b; d=p&0xff; c=(p&0xff00)>>8; printf("a=%d
b=%d
c=%d
d=%d
",a,b,c,d); }