java学习07--位运算符

//位运算符:<<(左移) >>(右移) >>>(无符号右移) & | ^(异或) ~(反码)

class Operate4 
{
    public static void main(String[] args) 
    {
        System.out.println(6&3);//110&011=010=2;1是有效位,将有效位进行运算;
        System.out.println(6|3);//110|011=111=7;1是有效位,将有效位保留;
        System.out.println(6^3);//110|011=101=5;1是有效位,将有效位进行计算;
/*      一个数异或同一个数2次,结果还是这个数;可以用于加密运算;
将一个数进行异或就相当于加密了,在通过异或同样的数就可以解密了~
银行的秘钥就是该技术
算法:一个数通过一系列的计算之后得到另一个数;
*/

//      ~反码:取反运算
        System.out.println(~6); //开发几乎用不上;

/*      位移运算:
左移几位其实就是该数据乘以2的几次方;
<<:可以完成2的次幂运算。

右移几位其实就是该数据除以2的几次方;
>>:对于高位出现的空位,原来高位是什么,就用什么补,保证符号位存在,未改变符号;

>>>:无符号右移
对于高位出现的空位,无论原来高位是什么,空位都用0补;

进行除2次幂运算时,用>>;

*/
        System.out.println(3<<2);//3往左移2位;0000-00000000-00000000-00000000-0011变成00……1100=12;
        System.out.println(3<<4);//3*(2的4次方)= 3*16 = 48     

        System.out.println(6>>1);//6往右移1位;0000-00000000-00000000-00000000-1100变成00……0110=3;
        System.out.println(6<<2);//6/(2的2次方)= 6*4 = 1(小数点省略);       

//      练习
//      2乘以8的等于几?(最有效率的方式)
        System.out.println(2<<3);

//      对2个整数变量的值进行互换;
        int a = 3, b = 5;
        System.out.println("a="+a+",b="+b);

        //使用第三方变量
        //正常编程开发的时候使用,阅读性最好;
        /*int c;
        c = b; b = a; a = c;
        System.out.println("a="+a+",b="+b);
        */

        //不使用第三方变量,这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换,数据会变化;
        /*a = a + b;//a = 3 + 5;
        b = a - b;//b = 8 - 5 =3;
        a = a - b;//a = 8 - 3 =5;
        System.out.println("a="+a+",b="+b);//连接符+的使用,别忘了啊~
        */

        //不使用第三方变量,使用异或运算
        //缺点:阅读性差,面试的时候可以用
        a = a ^ b;//a = 3 ^ 5;
        b = a ^ b;//b = (3^5)^5;b=3;
        a = a ^ b;//a = (3^5)^3;a=5;
        System.out.println("a="+a+",b="+b);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值