按位与(&)
两个操作数中相对应的位都是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
网友评论