最近想看看位运算这块 一般情况下不使用这块的只是但是用到了要知道
先说一下我所知道的运算符号
在oc 中和 c 中基本一致 : & 与运算符 | 或运算符 ^ 异或运算符 >> 右移位运算符
<< 左移位运算符 ~ 按位取反运算符【这个我没试过所以不敢胡诌】
运算法则 :
1、& 运算法则 同 1 则为1 其他则为 0;
for example --->>>> : 下面写2进制表示的 位数 100110&000110 的运算模式是
从后向前 依次比对 位置 不够位向前补 0️⃣
100110
&
000110
= 000110 最后结果是2^2+2^1 = 6;
2、| 或运算
运算法则 : 等同于二进制的每一位 相互结合有一个是 1 则为1 或者都为1 也是1 没有就是 0 ;
for example --->>>> : 下面写2进制表示的 位数 100110|000110 的运算模式是
100110
|
000110
= 100110 最后结果是2^5+2^2+2^1 = 38;
3、^ 异或运算
运算法则: 不同则1 同则为0
for example --->>>> : 下面写2进制表示的 位数 100110^000110 的运算模式是
100110
^
000110
= 100000 最后结果是2^5 = 32;
//后面的在oc中如何写 以及其他的运算 后续补全
4 >>向右移位 <<向左移位
我在oc 中看到了 1UL<<2 不知道什么意思 后来查看了说明 UL 指的是长整型的符号 好比说 long 一样 不用管 后面的是 向左移位 也就是 001 向左移动2位 100; 得到的结果就是 1*2^2 = 4;
入过我们将上面得到的4>>2 向后移动两位后会得到原来的 1 也就四 这样的 4>>2
二进制移位过程
100
>>
001
= 1;//这个指的是10 进制的1
网友评论