运算符 & | ^ ~ >> << 讲解

    NSLog(@"%d,%d,%d,%d,%d,%d",(7 & 8),(7 & 7),(7 & 6),(7 & 5),(7 & 4),(7 & 3));//0,7,6,5,4,3
    /*
     0000 0111   0000 0111   0000 0111   0000 0111   0000 0111   0000 0111
     0000 1000   0000 0110   0000 0101   0000 0101   0000 0100   0000 0011
   -----------------------------------------------------------------------------
     0000 0000   0000 0110   0000 0101   0000 0101   0000 0100   0000 0011
     
     */
    NSLog(@"%d,%d,%d,%d,%d,%d",(7 | 8),(7 | 7),(7 | 6),(7 | 5),(7 | 4),(7 | 3));//15,7,7,7,7,7
    /*
     0000 0111   0000 0111   0000 0111   0000 0111   0000 0111   0000 0111
     0000 1000   0000 0110   0000 0101   0000 0101   0000 0100   0000 0011
   -----------------------------------------------------------------------------
     0000 1111   0000 0111   0000 0111   0000 0111   0000 0111   0000 0111
     
     */
    NSLog(@"%d,%d,%d,%d,%d,%d",(7 ^ 8),(7 ^ 7),(7 ^ 6),(7 ^ 5),(7 ^ 4),(7 ^ 3));//15,0,1,2,3,4
    /*
     0000 0111   0000 0111   0000 0111   0000 0111   0000 0111   0000 0111
     0000 1000   0000 0111   0000 0110   0000 0101   0000 0100   0000 0011
   -----------------------------------------------------------------------------
     0000 1111   0000 0000   0000 0001   0000 0010   0000 0011   0000 0100
     
     */
    NSLog(@"%d",(7 >> 8));//0
    /*
     0000 0111
   ----------------
     0000 0000
     
     */
    NSLog(@"%d",(7 << 8));//1792
    /*
     0000 0000 0000 0000 0000 0111
   ----------------------------------
     0000 0000 0000 0111 0000 0000
     256 + 256*2 + 256*4 = 256*7 = 1792
     */
    NSLog(@"%d",(~7));//-8
    /*
     0000 0111
   ----------------
     0000 1000
     
     */

你可能感兴趣的:(运算符 & | ^ ~ >> << 讲解)