iOS 对单个数据位操作

61 阅读1分钟

位操作符

位操作符名称
&
|
^异或
<<左移
>>右移
~取反

& 与

0 & 0 = 0;
0 & 1 = 0;
1 & 0 = 0;
1 & 1 = 1;

同一二进制位上的数字都是1的话,&的结果为1,否则为0.

| 或

0 | 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 1;

同一二进制位上的数字只要有一个是1的话,|的结果为1,否则为0.

^ 异或

0 ^ 0 = 0;
0 ^ 1 = 1;
1 ^ 0 = 1;
1 ^ 1 = 0;

同一二进制位上的数字不同的话,^的结果为1,否则为0.

~ 取反

对二进取反的话,1变0, 0变1

🌰

1.定义一个参数。

int hardwareControl

00001  辅助灯开关   【第一位】
00010  倒计时开关   【第二位】
00100  循环播放开关  【第三位】
01000  静音开关     【第四位】
10000  其他音开关   【第五位】

2.获取对应的位的状态

 !!(hardwareControl & (1 << index));
 
【获取第一位】
!!(hardwareControl & (1 << 0));

【获取第二位】
!!(hardwareControl & (1 << 1));

【获取第三位】
!!(hardwareControl & (1 << 2));

3.修改对应的位

if(on){   //如果是要设置为1
    hardwareControl |= (1 << index);
else{  //如果是要设置为0
    hardwareControl &= ~(1 << index);
}

【设置第一位:开】
 hardwareControl |= (1 << 0);
 
【设置第一位:关】
 hardwareControl &= ~(1 << 0);