js中单竖杠‘|‘的的使用方法

项目开发过程中碰到了这样一段代码:

this.uuid = 'xxxxxxy_xxxx_xxxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g,
                function (c) {
                    var r = Math.random() * 16 | 0,
                        v = c == 'x' ? r : (r & 0x3 | 0x8);
                    return v.toString(16);
                }).toUpperCase();
            this.uuid=getCharacter("upper")+this.uuid;

​ 起初看到的时候,对单竖杠运算符’|‘不太理解,于是就在网上搜了一下,搜到的答案就好像是一个人写的,都是只介绍说,单竖杠’|‘可以用来取整运算,只保留整数部分。然后具体的运算规则,统一都是再说单竖杠’|'是将两个数转成二进制数后相加得到的结果,并给出例子

console.log(3|4); //7
console.log(8|3);//11
console.log(4|4);//4

​ 看到这里的时候,前两个用二进制相加是没有问题的,但是到’4|4’的时候,就让人不得其解了,因为二进制相加的4|4明明是8,怎么会是4;

3|4

011
100
----
111

3|4 = 7

8|3

1000
0011
-----
1011

8|3 = 11

4|4

100
100
----
1000
算到这里,4|4应该是为8,但是这浏览器执行的时候4|4为4

于是就觉得单竖杠’|‘会不会不是二进制相加的结果。于是我就去找了一下朋友问一下,朋友一语点醒梦中人,说单竖杠’|'并不是相加,而是二进制去位或,这样的解释的话,就不会有问题了。

首先,要知道位或的原理,即有一为一,全零为零
3|4

011
100
----
111

3|4 = 7

8|3

1000
0011
-----
1011

8|3 = 11

4|4

100
100
----
100
4|4 = 4

理到这里,才算浅浅明白单竖杠’|'的使用,记录下来,以防下次迷糊!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值