^和& 和 >>>运算符

本文详细解析了Java中四种位运算符:异或(^)、按位与(&)、无符号右移(>>> )及左移(<<)的工作原理,并通过实例展示了这些运算符如何应用于实际操作。

今天在看HashMap源码时发现有几个没见过的运算符 " ^","&","<<<",">>>"。总结如下。

 1. "^"异或运算符 

          图一:

         

      以上代码运行的结果为1和0;

      你会发现运算的规则是:两个数进行异位运算时,两个变量值相同时,则值是0,其中一个变量为0,则值是另外一个变量的值。

         图二:

      

        以上代码运行的结果为3,2,1;

        你会发现:第5行和第6行像除法是吧,这么以为你就错了。

       异或的运算规则: a的值为1转换成二进制的值为1,b的值为2转换成二进制的值为10,然后将a的第一位数和b的第二位数对比,将a的第二位数和b的第二位数对比,以此类推。                   

                        int  a = 01   int   b = 10  参照图1运算规则

                         运算结果为11;转换成十进制就是3;

   2. "&"位于运算符 

           位于运算符也是对两个数的二进制同位进行比较,两个数的同位数的值同时为1则为1,否则为0;

           如:10&2

           10的二进制:1010;     2的二进制:0010;

            值则为:0010=2;

    3. ">>>"无符左移运算符 

              无符左移运算符 是对一个值向左移多少位。

              如:

          

              a的二进制值:10100; 向左移两位

              值则为:101;

               打印结果:5;

              当然你也可以用数学解决:a/(2的b次方);

      4. "<<"右移运算符 

               右移运算符 是对一个值向最右边加多少个0。

          如:

               

               a的二进制值:10100; 向右移两位

              值则为:1010000;

               打印结果:80;

              当然你也可以用数学解决:a*(2的b次方);

               

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值