位移运算符
<<:
表示左移,左移的N位数,表示原来的数乘以2*N。向左移动一位就等同于原来的数乘以了2。
例子:a<<num,将a向左移num的位数。运算原理就是将a(十进制)转换为二进制表达形式,剔除num个最高位,将剩余的数字按按顺序向左移动num位,在最低位补num个0。
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。如果左移的是byte 和short类型的,他们会自动转换成int类型。在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方
同理,
>>:
表示右移,右移N位数,表示原来的数除以2*N。向右移动一位就等于原来的数除以2.
例子:a>>num,将a向右移num的位数。运算原理就是将a(十进制)转换为二进制表达形式,剔除num个最低位,将剩余的数字按按顺序向右移动num位,在最高位补num个0。
位运算符包括: 与(&)、非(~)、或(|)、异或(^)
&:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110