【J2SE】java中的位运算符

Java的运算符,分为四类:

算数运算符、关系运算符、逻辑运算符、位运算符。

算数运算符:+   -   *   /   %  ++  --

关系运算符:==   !=  >   >=   <  <=

逻辑运算符:&&  ||  !  ^  &  |

位运算符:&  |  ~  ^  <<  >>  <<<

主要讨论一下位运算符

       位运算符是以二进制为单位进行的运算,其操作数和运算结果都是整型值。

       位运算符的位与'&', 位或'|', 位非'~' ,位异或‘^’ , 右移'>>',左移'<<',0填充的右移'>>>' 与逻辑运算符运算的相应操作的真值表完全相同,其差别知识    为运算符操作的操作数和运算结果都是  二进制整数,而逻辑运算相应操作的操作数和运算结果都是boolean型。位运算的效率非常高二进制首位(最高位)为符号位。0表示为正数,1表示为负数

                           

                           

 

1、按位与运算符 &

         规律如下:两个操作数中位都为1,结果才为1.否则结果为0。

         int   x  = 15;   //x等于二进制数的 0000 1111

         int   y  =  6;    //y等于二进制数的 0000 0110  

         int   z  = x&y; //z等于二进制的  0000 0110也就是十进制的6

                                   

2、按位或运算符 |

         规律如下:两个操作数中只要有一个位为1,结果就为1。否则就为0。

         int  x  =  15; //x等于二进制数的0000 1111

         int  y  =   6;  //y等于二进制数的0000 0110

         int  z  = x|y; //z等于二进制数的 0000 1111

                                    

3、非运算符~

         规律如下:如果位为0,结果是1,如果位为1,结果是0。

         int  x =  15;//x等于二进制数的 0000 1111

         int  y =  ~15;//y等于二进制数的1111 0000

4、按位异或运算符^

         规律如下:两个操作数的位中,相同则结果为0,不同则结果为1.

         int   x  =15;//x等于二进制数的  0000 1111

         int   y  = 6; //y等于二进制数的  0000 0110

         int   z=x^y;   //z等于二进制数的  0000 1001

                               

5、>>右移

      规则如下:

      按二进制形式把所有数字向后移动对应的位数,低位移出(舍弃),高位的空位补符号位。 例如将整数11向右位移1位的过程如图所示,11为正数,符号位为0。

                                        

6、<<左移

      按二进制形式把所有数字向左移动对应的位数,高位移除(舍弃),低位的空位补零,例如将整数11向左位移1位的过程如下图所示。

                                        

例如HashMap中

 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

将1左移4位。转换为2进制如下。0000 0001 ——>0001 0000   。由10进制的1变成10进制的16。

7、>>>无符号右移

      按二进制形式把所有数字向后移动对应的位数,低位移出(舍弃),高位的空位补0。

8、移位运算和乘除运算的关系

      对于正整数而言右移,往右移1位,相当于除以2。左移,往左移1位,相当于乘以2。

9、简单面试题

     2的3次方等价于1左移3位,也就是1<<3。 

 

 

 

 

 

 

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值