以下是JavaScript按位运算符的示例。
例子:
<script>
var a = 4;
var b = 1;
document.write( "A & B = " + (a & b) + '<br>' );
document.write( "A | B = " + (a | b) + '<br>' );
document.write( "~A = " + (~a) + '<br>' );
</script>
输出如下:
A & B = 0
A | B = 5
~A = -5
像C, C ++, Java, Python和其他各种语言一样, JavaScript也支持按位操作。在JavaScript中, 数字存储为64位浮点数, 但对32位二进制数执行按位运算, 即执行位运算JavaScript将数字转换为32位二进制数(签名)并执行操作, 然后将结果转换回64位数字。
以下是JavaScript中使用的一些按位逻辑运算符。
按位AND(&):
它是一个二进制运算符, 即接受两个操作数。如果两个位都设置为1(即1), 则按位与(&)返回1, 其他情况下则为0。
一种 | 乙 | 输出(A&B) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
位明智或(|):
它是一个二进制运算符, 即接受两个操作数。如果设置了任何操作数(即1), 则按位OR(|)返回1;在其他情况下, 则返回0。
一种 | 乙 | 输出(A | B) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
比特异或(^):
它是一个二进制运算符, 即接受两个操作数。如果两个操作数都不相同, 则按位XOR(^)将返回1, 而在其他情况下则返回0。
一种 | 乙 | 输出(A ^ B) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
位明智NOT(〜):
它是一元运算符, 即接受单个操作数。按位NOT(〜)翻转位, 即0变为1并且1变为0。
一种 | 输出(〜A) |
---|---|
0 | 1 |
1 | 0 |
以下是JavaScript中使用的一些按位移位运算符。
左移(<<):
它是一个二进制运算符, 即它接受两个操作数。第一个运算符指定数字, 第二个运算符指定要移位的位数。每个位向左移动, 从右侧添加0位。左侧的多余位将被丢弃。
一种 | 6(00000000000000000000000000000110) |
---|---|
乙 | 1(00000000000000000000000000000001) |
输出(A << B) | 12(00000000000000000000000000001100) |
传播右移符号(>>):
它是一个二进制运算符, 即它接受两个操作数。第一个操作数指定数字, 第二个操作数指定要移位的位数。每个位向右移动, 溢出位被丢弃。这是符号传播, 因为从左边开始添加的位取决于数字的符号(即, 如果为正则为0, 如果为负则为1)
一种 | 6(00000000000000000000000000000110) |
---|---|
乙 | 1(00000000000000000000000000000001) |
输出(A >> B) | 3(00000000000000000000000000000011) |
零填充右移(>>>):
它是一个二进制运算符, 即它接受两个操作数。第一个操作数指定数字, 第二个操作数指定要移位的位数。每个位向右移动, 溢出位被丢弃。从左侧添加0位, 因此其零填充向右移位。
一种 | 6(00000000000000000000000000000110) |
---|---|
乙 | 1(00000000000000000000000000000001) |
输出(A >>> B) | 3(00000000000000000000000000000011) |
以下是上述运算符的实现。
<script>
var a = 6;
var b = 1;
// AND Operation
document.write( "A & B = " + (a & b) + '<br>' );
// OR operation
document.write( "A | B = " + (a | b) + '<br>' );
// NOT operation
document.write( "~A = " + (~a) + '<br>' );
// Sign Propagating Right Shift
document.write( "A >> B = " + (a >> b) + '<br>' );
// Zero Fill Right Shift
document.write( "A >>> B = " + (a >>> b) + '<br>' );
// Left Shift
document.write( "A << B = " + (a << b) + '<br>' );
</script>
输出如下:
A & B = 0
A | B = 7
~A = -7
A >> B = 3
A >>> B = 3
A << B = 12
支持的浏览器:
- 谷歌浏览器
- IE浏览器
- 火狐浏览器
- 苹果Safari
- 歌剧