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