位运算
本人水平有限,题解不到为处,请多多谅解
本蒟蒻谢谢大家观看
1:右移如 :x>>y 右移相当于在x这个数的数下加一个小数点,小数点后有无数个0,然后将小数点前y个0向右移到小数点后;
其等价于 x/(2^y) ==x除以2的y次方;
2 : 左移如 :x<<y 左移相当于在x这个数的数下加一个小数点,小数点后有无数个0,然后将小数点后y个0向左移到小数点前;
其等价于 x*(2^y) ==x乘以2的y次方;
3:与运算 &: 5 & 6 == 101(2)& 110(2) == 100(2) 意思是将当前要与的两个数转化为二进制数后,如果当前位上的值都为1则当前位的值
为1,否则当前位上的值为0;(按位运算)
4:或运算 | : 5 | 6 == 101(2)| 110(2)== 111(2)意思是将当前要或的两个数转化为二进制数后,如果当前位上的值都为0则当前位的值为
0,否则当前位上的值为1;(按位运算)
5:非运算 ~ :5 ~ ==101(2)~ == 010(2) 意思是将当前要非的数转化为二进制数后,按位取反(按位运算)
6:异或 ^ : 5 ^ 6 == 101(2)^ 110(2) == 011(2)意思是将当前要异或的两个数转化为二进制数后,相当于不进位的加法,如:1+1=0,
0+1=1 , 1+0=1 或可以这样理解: 如果当前位上的值都不相等,则当前位上的值为1,如果当前位上的值都相等,则当前位上的值为0, (按位运算)
注意:移位 的运算优先级 高于 其他的 位运算,其他运算优先级根据实际情况来定……