按位运算

按位与(&)
&&运算符我们都知道,只有两个都为真,结果才为真。

&道理是一样的,只有两个数的值为1时,才返回1。例如1和3的按位与操作:

                    0001
                 &  0011
                ---------
                    0001

只有对应的数为1时,结果才为1,其他都为0。


我们也可以用一个数和1进行按位&操作来判断,而且速度更快:

下面是位运算过程:

                 1 = 0001
                 3 = 0011
                 --------
                     & = 0001

奇数的二进制码的最后一位数肯定是1,而1只有最后一位为1,按位&操作之后,结果肯定只有最后一位数为1。而偶数的二进制表示的最后一位数是0,和1进行按位&操作,结果所有位数都为0。

按位或(|)

|与||操作符的道理也是一样的,只要两个数中有一个数为1,结果就为1,其他则为0。

                        0001
                 |  0011
                ---------
                    0011



按位异或(^)

按位异或是两个数中只有一个1时返回1,其他情况返回0。

                        0001
                 ^  0011
                ---------
                    0010

数字与数字本身按位异或操作得到的是0,因为每两个对应的数字都相同,所以最后返回的都是0。

我们经常会需要调换两个数字的值:

var num1 = 1, num2 = 2, temp;
temp = num1;
num1 = num2; // 2
num2 = temp; // 1


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值