Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Toán tử NOT bitwise (~) trong JavaScript

Định nghĩa

Toán tử unary ~ đảo ngược tất cả bit của toán hạng 32-bit (1→0, 0→1). Tương đương -(x + 1).

Ví dụ

<script>
var b = 3;   // 000...011
document.write("(~b) = " + (~b)); // -4 (111...100)
</script>

Công thức

~x === -(x + 1)
// ~3  = -4
// ~-4 = 3
// ~0  = -1
// ~-1 = 0

Ứng dụng kinh điển: indexOf check

var str = "hello";
if (~str.indexOf("lo")) { // indexOf trả 3 → ~3 = -4 (truthy)
  console.log("Tìm thấy");
}
if (!~str.indexOf("xy")) { // indexOf trả -1 → ~-1 = 0 (falsy)
  console.log("Không tìm thấy");
}

Hiện nay khuyên dùng: str.includes("lo") hoặc str.indexOf("lo") !== -1 – rõ ràng hơn.

Ứng dụng khác

  • ~~x (double tilde) – làm tròn về 0 (giống Math.trunc) – xem bài 1003055120.
  • Bitmask: ~MASK tạo mask ngược để clear bit: value & ~MASK.

Lưu ý

  • Hoạt động trên 32-bit signed integer.
  • Kết quả có thể âm.