C语言位运算

一移位运算符    

当左移的时候 是乘法*2^n

A << 1 ,A * 2^1   当左移的时候,末位为0填充,不断左移,A最后就会等于0

    当右移的时候,是除法/2^n

A >>1  ,A / 2^1   当右移的时候,若是负数则最高位为1,正数为0,所以负数右移,永远都不会为0,当所有数都为正电平,例如1111 1111,可以称为等于-1 


二与或运算符

与:&&  或:||


三去反异或运算符

1,异或: ^

1 ^ 0 = 1 

1 ^ 1 = 0

0 ^ 1 = 1

0 ^ 0 = 0

 int a = 10;
    int b = 20;
    
    if (a ^ b) {
        printf("dddd");
    }else {
        printf("bbbb");
    }
    
    a = a ^ b ;
    printf("a:%d",a);
    b = a ^ b ;
    printf("b:%d",b);
    a = a ^ b ;
    printf("a:%d",a);
    
    /*
     如果都是异,那就是
     a < b   c = a + b
     a > b   c = a - b
     
     */

2,取反: ~

    将0-->1,1-->0

你可能感兴趣的:(C语言位运算)