ลบสองตัวเลขโดยใช้ 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