Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การลบสองตัวเลขโดยไม่ใช้เครื่องหมายลบ - JavaScript

ลบสองตัวเลขโดยใช้ bitwise operations แทนเครื่องหมาย -

ตัวอย่างโค้ด

const num1 = 56;
const num = 78;

const subtractWithoutMinus = (num1, num2) => {
  if (num2 === 0) return num1;
  // ใช้ XOR และ AND + shift เพื่อจำลองการลบ
  return subtractWithoutMinus(num1 ^ num2, (~num1 & num2) << 1);
};

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

หลักการ (Bitwise Subtraction)

  • a ^ b - บวกโดยไม่พิจารณา borrow (sum without borrow)
  • (~a & b) << 1 - คำนวณ borrow และ shift ซ้าย 1 บิต
  • วน recursive จนกว่า borrow จะเป็น 0

ผลลัพธ์

22

ข้อควรระวัง: Recursion อาจลึกเกินไปสำหรับตัวเลขใหญ่ ควรใช้ iterative version