JavaScript的位操作符总结

作者: mytac | 来源:发表于2016-12-26 21:56 被阅读67次

    按位与(&)

    两个操作数中相对应的位都是1时,这位为1,否则都为零

    var a=3//011
    var b=7//111
    console.log(a&b)// 输出3 => 011
    

    按位或(|)

    如果两个数对应为都不为0,这位才是1

    var a=3//011
    var b=7//111
    console.log(a|b)// 输出7 => 111
    

    按位异或(^)

    两个数对应位不同,这位才为1,否则为0

    var a=3//011
    var b=7//111
    console.log(a^b)// 输出4 => 100
    

    按位非(~)

    一元操作符。将操作数所有位取反。而根据js中带符号的整数的表示方法,对一个值使用~运算符相当于它的相反数减1。

    var b=-7
    console.log(~b)//输出6
    

    左移(<<)

    将第一个操作数进行左移,移动的位数为第二个操作数(0~31之间的一个整数),新的位由0补齐。

    var a=3
    var b=7//000111
    console.log(b<<a)//111000 => 输出56
    

    有符号右移(>>)

    将第一个操作数进行右移,移动的位数为第二个操作数(0~31之间的一个整数),右边的溢出位被忽略,填补在左边的位由原操作数符号决定,以便保持结果的符号与原操作数一致。如果第一个操作数是正数,移位后用0填补最高位;如果为负,用1填补最高位。

    var a=2
    var b=-7//1 111111001  
    console.log(b>>a)//1 11111110 => -2  
    

    无符号右移

    同样右移,最高位补0,忽略符号位

    var a=4
    var b=-1// 1 11111111
    console.log(b>>>a)//0 0000 1111 1111 1111 1111 1111 1111 1111 => 输出268435455
    

    相关文章

      网友评论

        本文标题:JavaScript的位操作符总结

        本文链接:https://www.haomeiwen.com/subject/iahsvttx.html