JavaScript 按位操作符详解:~、&、|、^、<<、>>

版权申诉
0 下载量 174 浏览量 更新于2024-08-19 收藏 17KB DOCX 举报
本文档提供了一系列JavaScript操作符的使用案例,包括按位非(~)、按位与(&)、按位或(|)、按位异或(^)以及左移(<<)和右移(>>)操作符。通过具体的代码示例,帮助开发者理解和掌握这些操作符的工作原理和应用。 在JavaScript中,操作符用于执行基本的数学和逻辑运算。以下是对这些操作符的详细解释: 1. **按位非(~)**: 按位非操作符`~`对一个数字进行按位取反。它将数字转换为二进制形式,然后对每一位进行取反,最后再转换回十进制。例如: ```javascript var num1 = 25; // 二进制:00000000000000000000000000011001 var num2 = ~num1; // -26 (二进制:11111111111111111111111111100110) ``` 结果是原数的二进制补码表示的负数减1。在这个例子中,25的二进制补码是11111111111111111111111111100110,转换为十进制即为-26。 2. **按位与(&)**: 按位与操作符`&`比较两个数的二进制位,如果对应位都是1,则结果位为1,否则为0。例如: ```javascript var result = 25 & 3; // 二进制:00000000000000000000000000011001 // 3 : 00000000000000000000000000000011 // AND // 00000000000000000000000000000001 alert(result); // 1 ``` 在这个例子中,25和3的二进制位中只有一个位(最右边的一位)是1,所以结果是1。 3. **按位或(|)**: 按位或操作符`|`比较两个数的二进制位,如果对应位至少有一个是1,则结果位为1,否则为0。例如: ```javascript var result = 25 | 3; // 二进制:00000000000000000000000000011001 // 3 : 00000000000000000000000000000011 // OR // 00000000000000000000000000011011 alert(result); // 27 ``` 结果是将25和3的二进制位中1的位置都设置为1,得到新的二进制数,再转换为十进制。 4. **按位异或(^)**: 按位异或操作符`^`比较两个数的二进制位,如果对应位相同,则结果位为0,否则为1。例如: ```javascript var result = 25 ^ 3; // 二进制:00000000000000000000000000011001 // 3 : 00000000000000000000000000000011 // XOR // 00000000000000000000000000011010 alert(result); // 22 ``` 这里,25和3的二进制位中除了最右边的一位不同,其他位相同,所以结果是这两个不同位对应的1。 5. **左移(<<)**: 左移操作符`<<`将一个数的二进制位向左移动指定的位数。例如: ```javascript var result = 25 << 2; // 二进制:00000000000000000000000000011001 // << 2 // 00000000000000000000000011001000 alert(result); // 100 ``` 25的二进制向左移动2位,相当于乘以2的2次方(即4),结果是100。 6. **右移(>>)**: 右移操作符`>>`将一个数的二进制位向右移动指定的位数。对于正数,右移不考虑符号位;对于负数,根据平台的不同,可能是有符号右移(保留符号位)或无符号右移(忽略符号位)。例如: ```javascript var result = 25 >> 2; // 二进制:00000000000000000000000000011001 // >> 2 // 00000000000000000000000000000011 alert(result); // 6 ``` 25的二进制向右移动2位,相当于除以2的2次方(即4),结果是6。 这些操作符在处理二进制数据、优化计算性能以及在某些特定场景(如位掩码)中非常有用。理解它们的工作原理和用法,能够帮助开发者编写更高效和精确的JavaScript代码。