位运算符的灵活使用
在C语言中,有& | ^ << >>位运算符,我们将他们分类成为两类来理解:
1.匹配运算符
&字面意思,将两个二进制数进行按位匹配,某同一位上都是1才返回1,否则0
|字面意思,将两个二进制数进行按位匹配,某同一位上有1则可返回1,否则0
^字面意思,将两个二进制数进行按位匹配,某同一位上两数不同则返回1,否则0
2.单目运算符
1.~字面意思,将某个二进制数的各个位上的数字取反,0 -> 1, 1 -> 0
2.<<字面意思,将某个二进制数往左边移动,右边补0
3.>>字面意思,将某个二进制数往右边移动,左边补0
使用提示:
1.但凡遇到二进制数,立马能够想到位运算符来实现对二进制数的灵活操作 -> 斐波那契编码问题
2.巧妙改变数的大小
3.类型不是限定的,不管你输入的是十进制、十六进制还是其他形式的数,在使用位运算符时,计算机都会先把它们转换成二进制(因为计算机底层只认识 0 和 1),然后对二进制位进行操作,最后再把结果转换成对应的类型返回