位运算(bit operate),即操作二进制位的运算
& 按位与 (都为1则为1,否则为0)
作用:迅速清零(eg:a&0);
判断奇偶(eg:a&1 为1奇数,为0偶数);
检查状态
| 按位或(有一个为1就为1,否则为0)
作用: eg,a|0XFF a值为255; 因为0XFF值为 11111111
//oc中的应用:添加状态 NSDate* date = [NSDate date]; NSCalendar* calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents* dateComponents = [calendar components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSe cond) fromDate:date];
^ 按位异或(不同为1,相同为0)
作用:
还原性
//交换两个整数的位置
int a = 10;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
NSLog(@"a = %d b = %d",a,b);
~ 按位取反(位预算符中唯一一个单目运算符)每个位置都取反(对应内存中存的值,如32bit系统的1表示为00000000 00000000 00000000 00000001)
<< 左移运算 (将2进制值向左移动若干位)
作用:
当数字要与2或2的倍数相乘时用,大大提高效率,相当于乘以2的移动位数次数方
>> 右移运算 (将2进制值向右移动若干位)
作用:
与左移运算符相反