位运算
最近把《C#6.0学习笔记》这本书看了一下,里面有一小段讲到了位运算,在这之前其实位运算我基本上总是混淆,可能是用的少且理解不透,今天又重新梳理了一遍!
位运算主要只二进制之间的运算,我们常用到的主要有以下五种:
一、按位与(&)
将2个数二进制位进行与运算,当两者对应二进制位上的都为真时结果才为真,否则为假(真=1;假=0)如 2&6=2
2 对应二进制如: 0 1 0
6 对应二进制如: 1 1 0
对应位数进行比较: 0 1 0 结果为2
二、按位或(|)
将2个数二进制位进行或运算,当两者对应二进制位上的只要有一个真时结果才为真,否则为假(真=1;假=0)如 2|6=6
2 对应二进制如: 0 1 0
6 对应二进制如: 1 1 0
对应位数进行比较: 1 1 0 结果为6
三、按位异或(^)
将2个数二进制位进行异或运算,当两者对应二进制位上的有且只有一个真时结果才为真,否则为假(真=1;假=0)如 2^6=4
2 对应二进制如: 0 1 0
6 对应二进制如: 1 1 0
对应位数进行比较: 1 0 0 结果为4
四、左移(<<)
把一个数的二进制所有位都向左移,如3<<2 ,j将3左移2位 3(011)<<2 => 01100=12
五、右移(>>)
把一个数的二进制所有位都向右移,如4>>2 ,j将4右移2位 4(100)>>2 => 001=1