位运算符
位运算符总是记得不太清楚,有朋友问起,就记一下
code
//1.Not (按位非):~
12的二进制表示:00001100
~12:11110011
//2.And (按位与):&
6 : 00000110
10 : 00001010
6 & 10 = 2 : 00000010
//3.Or (按位或): |
6 : 00000110
10 : 00001010
6 | 10 = 14 : 00001110
//4.Xor (按位异或): ^
6 : 00000110
10 : 00001010
6 ^ 10 = 12 : 00001100
//5.Shift left (左移运算符(每一次移动都表示"乘以2")):<<
12 : 00001100
(左移一位) : 12 << 1 = 24 : 00011000
(左移二位) : 12 << 2 = 48 : 00110000
(左移五位) : 12 << 5 = 384 :000110000000
//6.Shift right (右移运算符(每一次移动都表示"除以2")):>>
12的二进制表示:00001100
~12:11110011
//2.And (按位与):&
6 : 00000110
10 : 00001010
6 & 10 = 2 : 00000010
//3.Or (按位或): |
6 : 00000110
10 : 00001010
6 | 10 = 14 : 00001110
//4.Xor (按位异或): ^
6 : 00000110
10 : 00001010
6 ^ 10 = 12 : 00001100
//5.Shift left (左移运算符(每一次移动都表示"乘以2")):<<
12 : 00001100
(左移一位) : 12 << 1 = 24 : 00011000
(左移二位) : 12 << 2 = 48 : 00110000
(左移五位) : 12 << 5 = 384 :000110000000
//6.Shift right (右移运算符(每一次移动都表示"除以2")):>>
//超过的位将丢失,而空出的位则补0
12 : 00001100
(右移一位) : 12 >> 1 = 6 : 00000110
(右移二位) : 12 >> 2 = 3 : 00000011
(右移三位) : 12 >> 3 = 1 : 00000001
(右移三位): -12 >> 3 =-2 :-
alert(~12);// -13
alert(6&10);//2
alert(6|10);//14
alert(6^10);//12
alert(12<<1);//24
alert(12<<2);//48
alert(12<<5);//384
alert(12>>1);//6
alert(12>>2);//3
alert(12 >> 3);//1
alert(-12>>3);//-2 ?
12 : 00001100
(右移一位) : 12 >> 1 = 6 : 00000110
(右移二位) : 12 >> 2 = 3 : 00000011
(右移三位) : 12 >> 3 = 1 : 00000001
(右移三位): -12 >> 3 =-2 :-
alert(~12);// -13
alert(6&10);//2
alert(6|10);//14
alert(6^10);//12
alert(12<<1);//24
alert(12<<2);//48
alert(12<<5);//384
alert(12>>1);//6
alert(12>>2);//3
alert(12 >> 3);//1
alert(-12>>3);//-2 ?