美文网首页
知识点总结17:位运算符

知识点总结17:位运算符

作者: 枫之叶_小乙哥 | 来源:发表于2017-02-07 22:36 被阅读2次

枚举值的某个规律

  • 凡是使用了1 << n格式的枚举值, 都可以使用|进行组合使用
UIControlEventEditingDidBegin                                   = 1 << 16,
UIControlEventEditingChanged                                    = 1 << 17,
UIControlEventEditingDidEnd                                     = 1 << 18,
UIControlEventEditingDidEndOnExit                               = 1 << 19,

[textField addTarget:self action:@selector(test) forControlEvents:UIControlEventEditingDidBegin | UIControlEventEditingChanged];

用位运算表示的方法才能组合使用,具体原因如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    /**** 只有位运算的方法选项才能组合在一起用 ****/
    int a = 1 << 0; // 1       1左移0位 = 2的0次方
    int b = 1 << 1; // 2       1左移1位 = 2的1次方
    int c = 1 << 2; // 4       1左移2位 = 2的2次方
    int d = 1 << 3; // 8       1左移3位 = 2的3次方
    NSLog(@"方法的所有可能数: %d-%d-%d-%d", a, b, c, d);
    
    // 检验包含了多少可能
    // 检验数是value,它是所有可能的或运算,方法内部通过与运算来检验
    /* 1.检验数的获得
     0001
     0010
     0100
     ---------
     0111 value(或运算计算出value) 
     a | b | c = value = 0111
     */
    [self functionWithValue:a | d | b testValueOne:a testValueTwo:b testValueThree:c testValueFour:d];
    
    /* 2.内部检查机制
        0111&    value&
        0001     a
     ----------  ---------
        0001     包含有a
     
     
        0111&    value&
        1000     d
     ----------  ---------
        0000     不包含有d
     */
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (void)functionWithValue: (int)value testValueOne: (int)testValueOne testValueTwo: (int)testValueTwo testValueThree: (int)testValueThree testValueFour: (int)testValueFour{
    // a
    if (value & testValueOne) {
        NSLog(@"value包含了a---%d", testValueOne);
    }
    // b
    if (value & testValueTwo) {
        NSLog(@"value包含了b---%d", testValueTwo);
    }
    // c
    if (value & testValueThree) {
        NSLog(@"value包含了c---%d", testValueThree);
    }
    // d
    if (value & testValueFour) {
        NSLog(@"value包含了d---%d", testValueFour);
    }
    
}

@end

相关文章

  • 知识点总结17:位运算符

    枚举值的某个规律 凡是使用了1 << n格式的枚举值, 都可以使用|进行组合使用 用位运算表示的方法才能组合使用,...

  • Java运算符及运算符的优先级

    Java语言中提供了很多运算符来操作变量,现总结以下七种: 赋值运算符 算术运算符 关系运算符 逻辑运算符 位运算...

  • 9.22总结

    一.知识点总结 1.运算符重载关键字operator 类型为重载运算符的返回类型 2.最常见的是友元函数与重载运算...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • php转go学习随笔

    一、 二、相同知识点1、注释方法相同2、变量和常量声明方式一样 var 和const3、运算符基本类似,位运算符记...

  • JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一、概述 运算符是一种“功能”符号,用以通知 Java 进行相关的运算。 Java 语...

  • 数组中重复数问题

    题目 解法 知识点 1.“&”、“|”、“^”按位逻辑运算1.1 &是按位逻辑运算符,比如5 & 6,5和6转换为...

  • Python 位运算符与位运算

    总结: 位运算符 是 直接对整数在内存中的二进制位进行操作; Python运算符优先级: 以下表格列出了从最高到最...

  • 位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作 位与运算符 位与运算符(&)可以对两个数的比特位进行...

网友评论

      本文标题:知识点总结17:位运算符

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