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

Trừ hai số không dùng dấu trừ - JavaScript

Viết hàm trừ 2 số không sử dụng dấu - (dùng phép toán bitwise).

Giải pháp

Sử dụng phép trừ nhị phân: a - b = a + (~b + 1) hoặc thuật toán mượn bit.

const num1 = 56;
const num2 = 78;

const subtractWithoutMinus = (a, b) => {
  // a - b = a + (~b + 1) = a + (-b trong bù 2)
  // Dùng đệ quy với XOR và AND
  if (b === 0) return a;
  return subtractWithoutMinus(a ^ b, (~a & b) << 1);
};

console.log(subtractWithoutMinus(num2, num1)); // 78 - 56 = 22

Kết quả

Đầu ra trong console:

22

Giải thích: Mô phỏng phép trừ nhị phân: a ^ b là hiệu không nhớ, (~a & b) << 1 là nợ (borrow). Lặp cho đến khi không còn nợ.