推荐答案
// www.javascriptcn.com code example // 位运算符示例 let a = 5; // 二进制: 0101 let b = 3; // 二进制: 0011 // 按位与 (&) let andResult = a & b; // 0001 -> 1 // 按位或 (|) let orResult = a | b; // 0111 -> 7 // 按位异或 (^) let xorResult = a ^ b; // 0110 -> 6 // 按位非 (~) let notResult = ~a; // 1010 -> -6 // 左移 (<<) let leftShiftResult = a << 1; // 1010 -> 10 // 右移 (>>) let rightShiftResult = a >> 1; // 0010 -> 2 // 无符号右移 (>>>) let unsignedRightShiftResult = a >>> 1; // 0010 -> 2
本题详细解读
位运算符概述
位运算符直接操作二进制位,适用于整数类型的数据。JavaScript 中的位运算符包括:
- 按位与 (
&):对两个操作数的每一位进行与操作,只有两个位都为 1 时,结果位才为 1。 - 按位或 (
|):对两个操作数的每一位进行或操作,只要有一个位为 1,结果位就为 1。 - 按位异或 (
^):对两个操作数的每一位进行异或操作,当两个位不同时,结果位为 1。 - 按位非 (
~):对操作数的每一位进行取反操作,1 变 0,0 变 1。 - 左移 (
<<):将操作数的二进制位向左移动指定的位数,右边空出的位用 0 填充。 - 右移 (
>>):将操作数的二进制位向右移动指定的位数,左边空出的位用符号位填充。 - 无符号右移 (
>>>):将操作数的二进制位向右移动指定的位数,左边空出的位用 0 填充。
示例解析
- 按位与 (
&):5 & 3的结果是1,因为0101 & 0011的结果是0001。 - 按位或 (
|):5 | 3的结果是7,因为0101 | 0011的结果是0111。 - 按位异或 (
^):5 ^ 3的结果是6,因为0101 ^ 0011的结果是0110。 - 按位非 (
~):~5的结果是-6,因为~0101的结果是1010(在 JavaScript 中,负数以补码形式表示)。 - 左移 (
<<):5 << 1的结果是10,因为0101左移一位变为1010。 - 右移 (
>>):5 >> 1的结果是2,因为0101右移一位变为0010。 - 无符号右移 (
>>>):5 >>> 1的结果是2,因为0101右移一位变为0010。
注意事项
- 位运算符在处理大整数时可能会导致精度丢失,因为 JavaScript 中的数字是以 64 位浮点数表示的。
- 位运算符通常用于性能优化或处理底层数据,但在现代 JavaScript 开发中,使用场景相对较少。