Dar*_*htA 9 javascript bit-manipulation operators
x <<= y (x = x << y)x >>= y (x = x >> y)x >>>= y (x = x >>> y)x &= y (x = x & y)x ^= y (x = x ^ y)x |= y (x = x | y)这些不同的运营商做了什么?
asv*_*kau 13
<<, >>
Run Code Online (Sandbox Code Playgroud)
位移左右分别.如果您将左操作数想象为二进制位序列,则可以将这些操作数向左或向右移动右操作数指示的位数.
&, ^, |
Run Code Online (Sandbox Code Playgroud)
它们分别是按位和,xor和/ 或.你能想到的&,并|为同行&&和||,但他们会将自己的操作数为位向量,并在每个位执行逻辑运算.没有^^操作员,但此操作是"xor"或" exclusive or ".您可以将"a xor b"视为"a或b,但不是两者".
小智 5
这是让初学者变得简单的尝试。
先决条件
您必须熟悉二进制数字系统(由两位数字组成的数字)。如果不是,请先检查此链接: https: //www.mathsisfun.com/binary-number-system.html。以防万一之前的链接中断,这个答案可能会有所帮助:/sf/answers/2250909531/。
事实上,为了弄清楚这些运算符是如何工作的,您需要知道运算中涉及的数字后面是哪个位序列。之后你应该能够理解以下内容。
提醒
十进制数字及其二进制表示法:
0 0 | 5 101
1 1 | 6 110
2 10 | 7 111
3 11 | 8 1000
4 100 | 9 1001
Run Code Online (Sandbox Code Playgroud)
做什么>>>、>>做<<什么?
这些运算符将位序列向左或向右移位。
decimal | binary decimal | binary
---------|--------- ---------|---------
9 | 1001 2 | 10
>> 2 | >> 2 << 2 | << 2
= 2 | = 10 = 8 | = 1000
Run Code Online (Sandbox Code Playgroud)
做什么&、|做^什么?
这些运算符组合两个数字的位以创建一个新数字。
decimal | binary decimal | binary decimal | binary
---------|-------- ---------|-------- ---------|--------
5 | 101 5 | 101 5 | 101
& 6 | & 110 | 6 | | 110 ^ 6 | ^ 110
= 4 | = 100 = 7 | = 111 = 3 | = 011
Run Code Online (Sandbox Code Playgroud)
怎样&运作?
对于每对位:如果两个位中至少有一个为 0,则结果位为 0。如果两个位均不为 0,则结果位为 1。
101 bit 3 | bit 2 | bit 1
& 110 -------|-------|-------
= 100 1 | 0 | 1
& | & | &
1 | 1 | 0
= | = | =
1 | 0 | 0
Run Code Online (Sandbox Code Playgroud)
怎样|运作?
对于每对位:如果两个位中至少有一个为 1,则结果位为 1。如果两个位均不为 1,则结果位为 0。
101 bit 3 | bit 2 | bit 1
| 110 -------|-------|-------
= 111 1 | 0 | 1
| | | | |
1 | 1 | 0
= | = | =
1 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
怎样^运作?
对于每对位:如果两个位不同,则结果位为 1。如果两个位相同,则结果位为 0。
101 bit 3 | bit 2 | bit 1
^ 110 -------|-------|-------
= 011 1 | 0 | 1
^ | ^ | ^
1 | 1 | 0
= | = | =
0 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2701 次 |
| 最近记录: |