📅  最后修改于: 2023-12-03 15:08:39.622000             🧑  作者: Mango
在 JavaScript 中,操作数字的一位可以使用位运算符或字符串方法来实现。本文将介绍如何使用这些方法来设置、清除和切换数字的一位。
位运算符可以用来设置数字的一位,具体方法如下:
使用位运算符 |
将数字的指定位设置为1,其他位不变。
let num = 5; // 二进制为 0101
num = num | 2; // 将第二位设置为1,变为 0111
console.log(num); // 输出7
上面例子中,将数字5的二进制的第二位设置为1,得到的是数字7。
使用位运算符 &
将数字的指定位设置为0,其他位不变。
let num = 5; // 二进制为 0101
num = num & ~2; // 将第二位设置为0,变为 0101
console.log(num); // 输出5
上面例子中,将数字5的二进制的第二位设置为0,得到的仍然是数字5。
使用位运算符 ^
将数字的指定位取反,其他位不变。
let num = 5; // 二进制为 0101
num = num ^ 2; // 将第二位取反,变为 0111
console.log(num); // 输出7
上面例子中,将数字5的二进制的第二位取反,得到的是数字7。
除了使用位运算符外,还可以将数字转换为字符串,使用字符串方法来设置数字的一位。具体方法如下:
将数字转换为字符串后,可以使用字符串方法 substring()
来将指定位置替换为1。
let num = 253; // 数字十进制为253,二进制为 1111 1101
let str = num.toString(2); // 转换为二进制字符串 '11111101'
str = str.substring(0, 5) + '1' + str.substring(6); // 将第二位设置为1
num = parseInt(str, 2); // 转换回数字 253
console.log(num); // 输出253
上面例子中,将数字253的二进制的第二位设置为1,得到的仍然是数字253。
同样地,将数字转换为字符串后,可以使用字符串方法 substring()
来将指定位置替换为0。
let num = 253; // 数字十进制为253,二进制为 1111 1101
let str = num.toString(2); // 转换为二进制字符串 '11111101'
str = str.substring(0, 5) + '0' + str.substring(6); // 将第二位设置为0
num = parseInt(str, 2); // 转换回数字 221
console.log(num); // 输出221
上面例子中,将数字253的二进制的第二位设置为0,得到的是数字221。
同样地,将数字转换为字符串后,可以使用字符串方法 substring()
来将指定位置取反。
let num = 253; // 数字十进制为253,二进制为 1111 1101
let str = num.toString(2); // 转换为二进制字符串 '11111101'
str = str.substring(0, 5) + (str.charAt(5) === '0' ? '1' : '0') + str.substring(6); // 将第二位取反
num = parseInt(str, 2); // 转换回数字 221
console.log(num); // 输出221
上面例子中,将数字253的二进制的第二位取反,得到的是数字221。
通过位运算符或字符串方法,可以很方便地操作数字的一位。使用位运算符可能相对更加高效,而使用字符串方法更加直观易懂。在实际开发中,可以根据需要选择合适的方法。