JS中的位运算

written by Little Genius Programmer since 2019.9.9

前言

今天看书的时候正好看到了这个点,然后就稍微总结了一下放出来!

(有符号)左移 <<

num<<n:将num转为二进制,左移n位(当然,输出的结果是十进制的)

例如:

10<<2 //10的二进制是1010,左移两位是10 1000,转为十进制就是40
40

-10<<2
-40
  • 关于这个负数怎么移位(以-10<<2为例)
操作 数值表示
转为二进制 10000000 00000000 00000000 00001010
无符号整数 00000000 00000000 00000000 00001010
取反+1 11111111 11111111 11111111 11110110
移位(低位补0) 11111111 11111111 11111111 11011000
-1取反 00000000 00000000 00000000 000101000
补符号位 10000000 00000000 00000000 000101000
转为十进制 -40

(有符号)右移 >>

num>>n:将num转为二进制,右移n位(当然,输出的结果是十进制的)

例如:

10>>2 //10的二进制是1010,右移两位是10,即2
2

-10>>2
-3
  • 同样(以-10>>2为例)
操作 数值表示
转为二进制 10000000 00000000 00000000 00001010
无符号整数 00000000 00000000 00000000 00001010
取反+1 11111111 11111111 11111111 11110110
移位(高位补1) 11111111 11111111 11111111 11111101
-1取反 0000000000 00000000 00000000 000011
补符号位 1000000000 00000000 00000000 000011
转为十进制 -3

(无符号)右移 >>>

num>>>n:将num转为二进制,右移n位(当然,输出的结果是十进制的)

例如:

10>>>2 //10的二进制是1010,右移两位是10,即2
2

-10>>>2
1073741821
  • 同样(以-10>>>2为例)
操作 数值表示
转为二进制 10000000 00000000 00000000 00001010
无符号整数 00000000 00000000 00000000 00001010
取反+1 11111111 11111111 11111111 11110110
移位(高位补0) 00111111 11111111 11111111 11111101
转为十进制 1073741821

00111111 11111111 11111111 11111101这个数转为十进制是不好算的,可以间接计算

231 - 230 - 3

//即
 10000000 00000000 00000000 00000000
-01000000 00000000 00000000 00000011

按位与 &

num1 & num2:转为二进制,按位相与【同1则1】

  • 1&1=1
  • 1&0=0
  • 0&1=0
  • 0&0=0

例如

10&2
2
/*
10的二进制是1010
2的二进制是0010
结果是0010,也就是2
*/
-10&2
2

10&-2
10

-10&-2
-10
//连同符号位一起运算

按位或 |

num1 & num2:转为二进制,按位相或【同0则0】

  • 1|1=1
  • 1|0=1
  • 0|1=1
  • 0|0=0

例如

10|2
10
/*
10的二进制是1010
2的二进制是0010
结果是1010,也就是10
*/
-10|2
-10

10|-2
-2

-10|-2
-2
//连同符号位一起运算

异或 ^

num1 & num2:转为二进制,按位异或【异则1,同则0】

  • 1^1=1
  • 1^0=0
  • 0^1=0
  • 0^0=1

例如

10^2
8
/*
10的二进制是1010
2的二进制是0010
结果是1000,也就是8
*/
-10^2
-12

10^-2
-12

-10^-2
8
//连同符号位一起运算

制,按位异或【异则1,同则0】

  • 1^1=1
  • 1^0=0
  • 0^1=0
  • 0^0=1

例如

10^2
8
/*
10的二进制是1010
2的二进制是0010
结果是1000,也就是8
*/
-10^2
-12

10^-2
-12

-10^-2
8
//连同符号位一起运算
发布了29 篇原创文章 · 获赞 8 · 访问量 4783

猜你喜欢

转载自blog.csdn.net/qq_40738077/article/details/100670922