美文网首页
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:按位操作符

    进制表示法: 按位操作符 向左移位运算符 << :对值进行向左移动,超出数据项的高位将丢失,低位移入的值总为0,该...

  • JavaScript高程读书笔记(2)

    五、操作符 算数操作符、位操作符、关系操作符、 相等操作符 一元操作符++和--:注意a+++,- 位操作符按位非...

  • js中小数取整的方法

    常用方法 “双按位非”操作 按位或 按位异或 左移操作符

  • 按位操作符

    按位操作符 按位操作符是将操作数当做32为的比特序列(0和1组成),按位操作符操作数字的二进制形式,但是返回值依然...

  • 按位操作符

    按位操作符(Bitwise operators)将其操作数(operands)当作 32 位的比特序列(由 0 和...

  • 按位操作符

    平时很少用到按位操作符,总是记不清楚,特此记录一下: 运算符用法描述按位与( AND)a & b对于每一个比特位,...

  • 位运算

    Java中的按位操作符有四个,分别是:&(按位与)、|(按位或)、^(按位异或)、~(按位非)。 1、先来看按位与...

  • Swift - 高级运算符介绍

    除了基本运算符之外,Swift还支持位运算和位移运算,包括:1、按位取反运算:操作符是 ~2、按位与运算:操作符是...

  • C高阶1:二进制操作

    1. 位运算 按位运算No.操作符功能1&按位与2|按位或3~按位取反4^按位异或 运算规则pqp & qp | ...

  • JS按位操作符

    按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成...

网友评论

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

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