直接看代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 var a=5; // 00000101;
console.log(a|2); // 00000101 | 00000010 -->00000111--->7
console.log(a&2); // 00000101 | 00000010 -->00000000--->0
console.log(a^2); // 00000101 | 00000010 -->00000111--->7
a=-5; // 原码:10000101; 反码:11111010; 补码:11111011;
//-4 原码:10000100; 反码:11111011; 补码:11111100;
console.log(a|-4); // 11111011 | 11111100 -->11111111--->11111110--->10000001-->-1
console.log(a&-4); // 11111011 | 11111100 -->11111000--->11110111--->10001000-->-8
console.log(a^-4); // 11111011 | 11111100 -->00000111-->7
var arr =[1];
console.log(typeof "");
var a=1,c=1;
var b=(++a)+a;//前增量:先自增再赋值
var d=(c++)+c;//后增量:先赋值再自增
console.log(b+","+d); */
var a = 0x1234;
var b = 0x00ff;
console.log(a&b);
console.log(a|b);
console.log(a^b);
//0001 0010 0011 0100
//0000 0000 1111 1111
//& //0000 0000 0011 0100
//| //0001 0010 1111 1111
//^ //0001 0010 1100 1011
//左移一位相当于乘以2 左移两位相当于乘以4 以此类推...
console.log(7<<2);//0000 0111 <<2 0001 1100 -->28
//带符号右移相当于除以2(余数忽略) 左移两位相当于除以4 以此类推... (正数高位补0,负数高位补1)
console.log(7>>2);//0000 0111 >>2 0000 0001 -->1
console.log(-9>>4);//1000 1001-->1111 0110-->1111 0111 >>4 1111 1111-->1111 1110-->1000 0001 -->-1
console.log(-1>>4);//1000 0001-->1111 1110-->1111 1111 >>4 1000 0111-->1111 1110-->1000 1001 -->-1
//无符号右移高位补0 32位
console.log(-5>>>3);
//1000 0000 0000 0000 0000 0000 0000 0101
//1111 1111 1111 1111 1111 1111 1111 1010
//1111 1111 1111 1111 1111 1111 1111 1011
//1111 1111 1111 1111 1111 1111 1111 1111 >>>4
//1111 1111 1111 1111 1111 1111 1111
console.log(-1>>>4);
console.log(-1>>>1);