美文网首页
iOS:按位操作符

iOS:按位操作符

作者: 春暖花已开 | 来源:发表于2020-06-17 10:46 被阅读0次
    进制表示法:
    二进制: 0b             
    八进制: 0
    十六进制: 0x
    
    按位操作符
    • 向左移位运算符 <<对值进行向左移动,超出数据项的高位将丢失,低位移入的值总为0,该操作需要说明位移动数目。
      typedef NS_OPTIONS(NSUInteger, MZState) {
          MZStateA = 1 << 0,  //0001  1
          MZStateB = 1 << 1,  //0010  2
          MZStateC = 1 << 2,  //0100  4
          MZStateD = 1 << 3,  //1000  8
      };
      

    • 按位或运算符 |在对两个值执行按位或运算时,会逐位比较两个值的二进制数,只要有一位值是1,结果对应位即为1。
      MZState state = MZStateA | MZStateB;
                         0001  | 0010 = 0011 ==> 3
      
    • 按位与运算符 &执行与运算时,会逐位比较两个值的二进制数,只有在对应位上都为1时,结果对应位上才是1。
      MZState state = MZStateA | MZStateB;  //0011 ==> 3
      state &= MZStateB;  //==> 0010 ==> MZStateB
      

    小结: 按位或 |用来设置位值,按位与 & 用来解除之前保存位的值。(前提是值都是规则的,即盛放的值都是 1 << 0, 1 << 2 这种形式)


    • 一次求返 ~一次求返运算符是一元运算符,用来将位中的1翻转为0,位中的0翻转为1。
      (0b1111 | 0b1100) & ~0b1100
      0b1111 & 0b0011 ==> 0b0011 ==> 3
      
    • 按位异或运算符 ^逐位比较两个运算数的二进制,只有在一个位是1,另一个数对应位不是1时,结果的对应位才是1(即:对应位不相同,则为1)。
      0b1111 ^ 0b1100 ==> 0011 ==> 3
      

    相关文章

      网友评论

          本文标题:iOS:按位操作符

          本文链接:https://www.haomeiwen.com/subject/dyvjxktx.html