Nik*_*sev 4 javascript bitwise-operators
这个JavaScript代码是什么意思?
flag &= ~CONST
Run Code Online (Sandbox Code Playgroud)
它是追加,前置,交叉或其他什么?
看看Bitwise运算符.
& 将1和两个操作数的位置为1.
10000001 & 00000001 = 00000001
Run Code Online (Sandbox Code Playgroud)
~ 反转位.
~10000000 = 011111111;
Run Code Online (Sandbox Code Playgroud)
flag &= ~CONST是短手的flag = flag & ~CONST;.
您可能已经看到类似的东西,例如number *= 10.
这将关闭任何常数代表.
例如,让我们看一个代表窗口状态的代码的假设示例:
WS_HASBORDER = 0x01;
WS_HASCLOSEBUTTON = 0x02;
WS_HASMINIMIZEBUTTON = 0x04;
WS_HASMAXIMIZEBUTTON = 0x08;
WS_ISMAXIMIZED = 0x10;
Run Code Online (Sandbox Code Playgroud)
我们可以通过使用来表示窗口的"状态"
windowState = WS_HASBORDER | WS_HASCLOSEBUTTON | ... etc
现在,让我们说我们要"关闭"其中一个状态,那就是你的示例代码所做的...
windowState &= ~WS_HASBORDER
现在上面的代码做了什么,它是否得到了赞美[我想你可以称之为反转位]的任何东西,WS_HASBORDER.
所以...... WS_HASBORDER有一位开启,其他一切都被关闭了.它的恭维已经打开所有位,除了之前关闭的一位.
因为我已经将许多常量表示为字节,所以我只给你看一个例子[不是javascript不代表数字作为字节,你也不能这样做]
WS_HASBORDER = 0x01; //0000 0001
WS_HASCLOSEBUTTON = 0x02; //0000 0010
WS_HASMINIMIZEBUTTON = 0x04; //0000 0100
WS_HASMAXIMIZEBUTTON = 0x08; //0000 1000
WS_ISMAXIMIZED = 0x10; //0001 0000
Run Code Online (Sandbox Code Playgroud)
_现在举个例子
windowState = WS_HASBORDER | WS_HASCLOSEBUTTON | WS_HASMINIMIZEBUTTON |
WS_HASMAXIMIZEBUTTON | WS_ISMAXIMIZED;
0000 0001
0000 0010
0000 0100
0000 1000
and) 0001 0000
--------------
0001 1111 = 0x1F
Run Code Online (Sandbox Code Playgroud)
所以... windowState获取值0x1F
windowState&= ~WS_HASMAXIMIZEBUTTON
WS_HASMAXIMIZEBUTTON: 0000 1000
~WS_HASMAXIMIZEBUTTON: 1111 0111
Run Code Online (Sandbox Code Playgroud)
..完成我们的计算
windowState
&) ~WS_HASMAXIMIZEBUTTON
becomes
0001 1111
&) 1111 0111
-------------
0001 0111 = 0x07
Run Code Online (Sandbox Code Playgroud)
以下是结果标志:
On:
WS_HASBORDER
WS_HASCLOSEBUTTON
WS_HASMINIMIZEBUTTON
WS_ISMAXIMIZED
关:
WS_HASMAXIMIZEBUTTON
希望有所帮助.回到拖延作业我去!哈哈.
| 归档时间: |
|
| 查看次数: |
618 次 |
| 最近记录: |