JavaScript的位操作符总结

按位与(&)

两个操作数中相对应的位都是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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容