用按位与、按位或、按位取反实现按位异或

我们知道,使用按位异或可以不用临时变量交换两个整型变量的值

按位异或 可以用 按位与、按位或、按位取反来模拟吗?

<html>
    <head>
        <title>js测试1</title>
        <script type="text/javascript">

            /*
            a    1101=13
            b    1001=9

            a&b    1101 & 1001 = 1001 0的地方证明有0
            a|b    1101 | 1001 = 1101 1的地方证明有1

            !(a&b) = 0110 1的地方证明有0
            !(a|b) = 0010 0的地方证明有1

            !(a&b) & (a|b) = 0100 的地方证明不同 实现异或 
            */

            function exchange(a , b){
                alert("转换前两个数字为:" + a+","+b);
                a = ~(a&b) & (a|b);
                b = ~(a&b) & (a|b);
                a = ~(a&b) & (a|b);
                alert("转换后两个数字为:" + a+","+b);
            }
        </script>
    </head>
        <script type="text/javascript">
            exchange(5,2);
            //alert(1 | 2);
        </script>
    <body>
        
    </body>
</html>

 

转载于:https://www.cnblogs.com/mycome/p/3812785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值