美文网首页
OC中的位运算

OC中的位运算

作者: 小强简书 | 来源:发表于2018-01-24 21:01 被阅读193次

OC中的位运算和C/C++里的是一样的,&(按位与),| (按位或),~ (按位取反),<<(左移) ,>>(右移),^(异或)以及 &= (按位与然后赋值),|= (按位或然后赋值)等

typedef NS_OPTIONS(NSInteger, MonthType) {
    //bitmask (位掩码):1111
    MonthJanuary         = 1 << 0,   //    0001  '<<'左移运算
    MonthFebruary        = 1 << 1,   //    0010
    MonthMarch           = 1 << 2,   //    0100
    MonthApril           = 1 << 3,   //    1000
};
MonthType monthType = MonthJanuary | MonthFebruary;

//添加三月
monthType |= MonthMarch;  ////对应的进行按位或运算seasonType = 0011 | 1000 = 1011 等同于 monthType = monthType | MonthMarch

//把三月去掉
monthType &= ~ MonthMarch; ////对应的运算为 seasonType = 1011 & (~1000) = 1011 & 0111 = 0011; 等同于 monthType = monthType & ~ MonthMarch;

& 与运算相同为 0 相异为 1

异或运算,相同为 0 相异为 1

//定义a, b
int a = 1, b = 2;
// a = 0001 , b = 0010
a = a ^ b;  // a = 0001 ^ 0010 = 0011
b = a ^ b;  // b = 0011 ^ 0010 = 0001
a = a ^ b;  //  a = 0011 ^ 0001 = 0010
//简写的话是这样
//a ^= b;
//b ^= a;
//a ^= b;
//即 a = a ^ b 等价于 a ^= b

相关文章

  • OC中的位运算

    OC中的位运算和C/C++里的是一样的,&(按位与),| (按位或),~ (按位取反),<<(左移) ,>>(右移...

  • 举例说明OC中的位运算

    OC中的位运算和C/C++语言的位运算是一样的。一般有 &(按位与),| (按位或),~ (按位取反),<<(左移...

  • swift中的枚举使用问题

    在OC中,当遇到可以进行位运算的枚举值时,可以使用|(或运算符组合多个枚举值) 比如这种类型NSStringDra...

  • OC中的数据类型和运算符

    参考文档: OC中的数据类型和运算符

  • 位运算

    最近想看看位运算这块 一般情况下不使用这块的只是但是用到了要知道 先说一下我所知道的运算符号 在oc 中和 c 中...

  • 05-Dart语言基础-基础运算

    Dart中的运算和其它语言大同小异,大部分与C/OC相差不大,部分与Swift中的运算符类似。 1.基础的算术运算...

  • From Objective-C to Ruby(2)-数据类型

    两者对比 数字 四则运算 OC: ruby: OC中NSNumber不具有四则运算的方法,所以可以使用C语言的四则...

  • 嵌入式C语言的位运算

    想必大家都了解&&(且运算符),||(或运算符),在C语言的位运算中 ,位或运算|,位与运算&,异或^,取反~。等...

  • 2019-03-19 计算机二级C语言程序设计之位运算

    位运算符的运算功能 按位取反 运算符~是位运算中唯一的一个单目运算符,运算对象置于运算符的右边,其运算功能是把运算...

  • Java 中的位运算

    预备知识 原码 : 符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。 反码 : 正数的反码是其本身;...

网友评论

      本文标题:OC中的位运算

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