C语言位运算
- 学C语言没怎么学位运算,学单片机也没怎么补位运算,直到做了moeCTF的maze题目,才发现有位压缩,来补缺补漏。先加密,等写完再解密
C语言位运算符
- 先来介绍一下C语言中的位运算符号,这写符号都是按照一个一个
位
来进行运算的,所以被称为位运算符,相应的运算就被称为位运算
- 先来介绍一下位运算符:
~
:按位取反,也就是二进制位中原来的1
变成0
,原来的0
变成1
,这是一个一元运算符<<
:左移运算,就是将二进制位左移,扩大2**n
倍,这是一个一元运算符>>
:右移运算,就是将二进制位右移,缩小2**n
倍,这是一个一元运算符&
:按位与运算,将两个二进制数的相同位进行与运算,相同位都为1
结果的相同位才为1,其他情况1&0=0,0&0=0,0&1=0
。二元运算符|
:按位或运算,将两个二进制数的相同位进行或运算,相同位都为0
结果的相同位才为0
,其他情况结果的相同位都为1
,二元运算符^
:异或运算,将两个二进制数的相同位进行异或运算,相同位只有满足1^0或者0^1
结果的相同位才为1
,二元运算符- 剩下的运算符和
+=
是一个性质:&=
:a&=b
进行a&b
运算,然后将结果保存在a
中|=
:a|=b
进行a|b
运算,将结果保存在a
中^=
:a^=n
进行a^b
运算,将结果保存在a
中>>=
:a>>=b
进行a>>b
运算,将结果保存在a
中<<=
:a<<=b
进行a<<b
运算,将结果保存在aa
中
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 iyheart的博客!