这行代码的含义是什么
n = (n<<1) | ((d>=0.0004)?1:0);
尝试在函数sigOff()中理解此处的代码 http://www.espruino.com/Remote+Control+Sockets
答案 0 :(得分:1)
此代码段似乎使用bitwise OR(|
)和左移(<<
)运算符:
按位OR:
a | b
;
在每个位位置返回一个位,其中一个或两个操作数的相应位为1。
左移:a << b
;
向左移位二进制表示b(&lt; 32)位,从右移零。
1
(<< 1
)的左移基本上是n
的值的两倍。
然后,或(|
)基本上&#34;添加&#34;如果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