Linux学习---位运算符

时间:2022-01-24 06:14:40
  • <<、>>

   ① << 左移  乘以2^n

    m << n    m*(2^n)   

    eg:4:  0 0 1 0 0

      8:   0 1 0 0 0

    [数据、数字]移位

    左移:右侧补0

    1 0 0 0 0 0 0 1        1 0 0 0 0 0 1 0

    1 1 1 1 1 1 1 0        1 1 1 1 1 1 0 1

    1 1 1 1 1 1 1 1 ====》-1     1 1 1 1 1 1 1 0    ====》-2

    右移:补符号 (整数补0,负数补1)

    ②>> 右移  除以2^n

  • &(与)清零器

    ①屏蔽

      eg:int a = 0x1234

        a & 0xff00;   屏蔽低八位,取出高8位。

    ②取出

      eg:A & 1 => A

  •  |   (或)设置

    ①保留

      eg:A | 0 ===A

        A | 1 ===1

    

注:eg:设置一个资源的5bit为高电平,其他为不变。

  int a;

  a = ( a | (0x1<<5));  ======> a | (0x1<<5);

  eg:清除第五位

  a = a & ~(0x1<<5); ======> a = a & (~(0x1<<n))

  • ^ (异或)

    1 ^ 1 = 0, 0 ^ 0 = 0'

    1 ^ 0 = 1;

  • ~ (取反)

    0xf0  ~   0xffff ff0f

  • ()

  ①限制符  (a+b)*c

  ②函数访问  int fun();

  • []  内存访问的ID符号
  • {} 函数体限制符

  

  • ->  地址访问
  • .    变量访问