
位运算符的妙用vol.1
位运算符的妙用vol.1
<<左移运算符代替 乘法
先放定义:左移运算符是一个C++中的一种位操作符。用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位
举个栗子
一是进制数 9 转为二进制是 0000 1001
对 0000 1001 进行左移一位的操作后得到 0001 0010
0001 0010 对应的数就是 18
为什么有这样的规律?
将二进制数x2 可以看做对每一位二进制数字x2
若该位数字是 0, x2后无变化
若该位数字是 1, x2后变为 10
最终该数在形式上的变化就是左移了一位
优势
运算速度比乘法更快 运算消耗更少
>>右移运算符代替 除法
同上
|或运算符将偶数+1
举个栗子
2 | 1 = 3
why?:
十进制偶数 2 对应二进制数 0010
十进制偶数 4 对应二进制数 0100
十进制偶数 6 对应二进制数 0110
十进制偶数 8 对应二进制数 1000
十进制偶数对应的二进制数的个一定是 0
0 与 1 进行或运算结果是 1
反映在十进制数中就是将偶数+1变为奇数
&与运算符将奇数-1
举个栗子
3 & 0 = 2
why?:
与或运算符将偶数+1原理类似