位运算 主要是以下四种运算
&
|
<<
>>
逻辑运算的与和或是 && 和 || 千万不要用混了
我们要把 a和b按照位数进行与
a&b
会把a和b转成2进制之后进行与计算。同样道理|预算也是一样的
当我们想要把a的某一位 置1的时候 a |(1<<n)n就是你想要移动的位数
就可以完成把某一位设置成1
当我们想要把a的某一位 置0的时候 a &(0<<n)n就是你想要移动的位数
就可以完成把某一位设置成0
如果要设置一串1或者一串0又应该怎么办呢 ?
当设置1的时候 a | (0xFF)就是把a的后8位设置成1
如果设置多个1 并且不是后几位的时候就需要我们把要设置的位数的1
进行转换成16进制 之后进行移位操作;就完成了设置1的操作
当设置0的时候 a & (0x0)就是把a的后8位设置成0
然后你去看输出的时候就会发现 好像所有位置都被设置成了0
因为0x0会按照你的类型填充成其他对应位都是0 就产生了所有位都为0
那么我们就需要一个操作 a |=(~0)再进行操作就可以设置了
截取一段数据位又该怎么样呢?