java中不需要中间变量进行数值交换的操作

直接用代码说明

        int a = 3;
        int b = 5;

        a = a ^ b;                    //a = 3^5
        b = a ^ b;                    //b = 3^5^5   =>  3
        a = a ^ b;                    //a = 3^5^3   =>  5

        //上面使用到的是位运算 ;
        //一个元素 ^ 两次同一个元素 最后的结果还是 它本身;
        //十进制   二进制
        //  20    10100                 0000 0000 0001 0100
        //  12    01100                 1111 1111 1110 1011
        //位运算的一些介绍
        //    &    两个数据 相比 都是 true 才是true
        System.out.println(20 & 12);     //00100    4

        //   |   两个数据,同时都是false 才是false
        System.out.println(20|12);      //11100     28

        //   ^   不同是true,相同是false
        System.out.println(20^12);      //11000     24

        //   ~   取反,二进制全部取反,0变1,1变0,包括符号位
        System.out.println(~10);        //11111111111111111111111111110101    -11
        //这里说一下 11111111111111111111111111110101 怎么换算成-11的,
        // 负数的二进制码是 这个数的绝对值的数值的二进制码 进行 反码 补码 运算得到的,也就是上面这个样子.
        //现在需要把 11111111111111111111111111110101 -1  变成 11111111111111111111111111110100
        //11111111111111111111111111110100  进行反码  变成     0000000000000000000000000001011
        // 也就是 11 在加上 原来的负号 就成了-11

        // <<  有符号左移运算,符号位保存,右边补0;
        System.out.println(20<<1);   //20 * 2的1次幂 = 40

        //  >>  有符号右移运算,符号位保存,左侧补0
        System.out.println(20>>1);   //20 / 2的1次幂 = 10

        //  >>> 无符号右移,无论左侧符号位是1还是0,都补上0;
        System.out.println(20>>>1);   //20 / 2的1次幂 = 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值