这行代码的含义是什么

n = (n<<1) | ((d>=0.0004)?1:0);


尝试从此处了解函数sigOff()中的代码
http://www.espruino.com/Remote+Control+Sockets

最佳答案

此代码段似乎使用bitwise OR(|)和左移(<<)运算符:


  按位或:a | b;
  在每个操作数或两个操作数的对应位为1的每个位位置返回1。
  左移:a << b;
  将二进制表示形式的a向左移动b(

1<< 1)的左移基本上使n的值加倍。
然后,如果|,则or(1)基本上将“ d >= 0.0004”添加到结果中以使其不均匀。
如果为d < 0.0004,则左移的结果不变。

因此,对于n == 3d == 0.0004,会发生以下情况:

n << 1          // 6
(d>=0.0004)?1:0 // 1
6 | 1           // 7


对于n == 5d == 0.0002,会发生以下情况:

n << 1          // 10
(d>=0.0004)?1:0 // 0
10 | 0          // 10

09-05 01:37