按位 操作符的学习

没有按位计算的思维的程序员,不是一个合格的程序员。所以程序猿们需要补足这块的短板。

1.使用最多的左移(<<)、右移(>>) 。使用的方式:例如使用int来存储ip地址,255.255.255.255。ip一共四个区,每个区的数值是0-255。

 2的8次方是256.也就是8个bit(8位)就能存储一个分区的数字。

let ipstr = '192.168.199.1';

function str2ip(ipstr){
    let splists = ipstr.split('.');
    let intip = 0;
    for(let i = 0; i < splists.length; ++i){
        intip = intip | (splists[i] << (8*i));
    }
    console.log(`转化成int = ${intip}`);

    let stripArr = [];
    for(let i = 0; i < 4; ++i){
        stripArr.push((intip >> (8 * i)) & 0xff); 
    }
    console.log(`重新组装ip${stripArr.join('.')}`); 
}
str2ip(ipstr);

2.& 按位与操作。

0&0 = 0

0&1 =0 

1&0 = 0

1&1 = 1

1>指定位清0:将某些位与0操作,进行清0处理

2>取指定位的值,经常用0xff来取最低8位的值。

3>用来判断奇偶性 if(a&0 == 0) 代替 if(a%2 == 0)

3.| 按位或操作

0|0 = 0

1|0 = 1

0|1 = 1

1|1 = 1

4.^按位异或运算

0^0 = 0

0^1 = 1

1^0 = 1

1^1 = 0

可以用0 来取原来的值。用1来取反。

 

function testAB(){
    let a = 3; 
    let b = 129;
    while(b != 0){
        let _a = a ^b;
        let _b = (a&b)<< 1;
        a = _a;
        b = _b;
    }
    console.log(`a + b = ${a}`);
}

testAB();

5.~ 按位取反

6.>>> 无符号右移

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值