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

การบวกเลขฐานสองโดยไม่แปลงใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงเลขฐานสองสองสตริง str1 และ str2 เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรคืนค่าผลรวมของเลขฐานสองทั้งสอง เราไม่ได้รับอนุญาตให้แปลงเลขฐานสองเป็นฐานสิบแล้วบวก และผลรวมที่ได้ไม่ควรมีศูนย์นำหน้า

ตัวอย่างเช่น หากอินพุตคือ

อินพุต

const str1 = '1101';
const str2 = '10111';

เอาต์พุต

const output = '100100';

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

const str1 = '1101';
const str2 = '10111';
const addBinary = (str1 = '', str2 = '') => {
str1 = str1.split('').reverse();
str2 = str2.split('').reverse();
let res = '', temp = 0;
while (str1.length || str2.length || temp) {
temp += (~~str1.shift()) + (~~str2.shift());
let mod = temp % 2;
res = mod + res;
temp = temp > 1;
};
return (+res) ? res.replace(/^0+/, '') : '0';
};
console.log(addBinary(str1, str2));

ผลลัพธ์

100100