这行代码的含义是什么
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 == 3
和d == 0.0004
,会发生以下情况:
n << 1 // 6
(d>=0.0004)?1:0 // 1
6 | 1 // 7
对于
n == 5
和d == 0.0002
,会发生以下情况:n << 1 // 10
(d>=0.0004)?1:0 // 0
10 | 0 // 10