黑马程序员技术交流社区
标题:
位运算符
[打印本页]
作者:
聽聽我dē❤
时间:
2012-11-13 17:08
标题:
位运算符
位运算符
位运算符用于处理整型和字符型的操作数。位运算是完全针对二进制位(bit)单位的操作,Java语言提供的位运算符。
说明:Java的位运算符中,非运算“~”是一元运算符,除此之外的都是二元运算符。
1.位移运算
<<左移。
>>右移。
>>>无符号右移。
左移就是将左移的操作数在内存中的二进制数据左移右边操作数指定的位数,左边移空的部分补0.右移则复杂一些。当使用“>>”符号时,如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位就填入1。
Java还提供了无符号右移“>>>”,不管最高位是0还是1,右移空的高位都填入0。
注意:移位运算符适用的数据类型有byte、short、char、int、long。
技巧:移位能实现整数除以或乘以2的n次方的效果,如y<<2与y*4的结果相同;y>>1的结果与y/2的结果相同。总之,一个数左移n位,就是讲这个数乘以2的n次方,一个数右移n位,就是将这个数除以2的n次方。
2.“按位与”运算
“按位与”运算的运算符为“&”,“&”是二元运算符。“按位与”运算的运算法则是:如果两个整数数据a、b对应位都是1,则该位结果才是1,否则为0,即
0&0=0 0&1=0 1&0=0 1&1=1
例如:6的二进制是110,3的二进制是011,这两个数按位与运算的方法如下,括号中的是十进制数。
3.“按位或”运算
“按位或”运算的运算符为“|”,它是二元运算符。“按位或”运算的运算法则是:如果两个操作数对应位都是0,则该位的结果才是0,否则为1,即
0|0=0 0|1=1 1|0=1 1|1=1
例如:6的二进制是110,5的二进制是101,这两个数按位或运算的方法如下,括号中的是十进制数。
4.“按位异或”运算
“按位异或”运算的运算符为“^”,它为二元运算符。“按位异或”运算的运算法则是:当两个操作数的二进制对应位相同(同时为0或同时为1)时,结果为0,否则为1,则
0^0=0 0^1=1 1^0=1 1^1=0
例如:6的二进制是110,5的二进制是101,这两个数按位进行异或运算的方法如下,括号中的是十进制数。
5.“按位取反”运算
“按位取反”运算也称“按位非”运算,运算符为“~”它为一元运算符。它的运算法则是:操作数二进制中的1修改为0,0修改为1,即
~0=1 ~1=0
例如:153的二进制是10011001,把它按位取反的结果为01100110.
作者:
李桐
时间:
2012-11-13 18:56
{:soso_e179:}很好很强大
作者:
吴瑞祥
时间:
2012-11-15 00:01
本来以为左移会有问题,仔细想了下,左移的问题是数据溢出,溢出你就算手动判断符号位再修改也是错误值,没什么意义··
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2