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

Cộng nhị phân không chuyển đổi trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào hai chuỗi nhị phân str1 và str2 làm đối số thứ nhất và thứ hai. Hàm phải trả về tổng của hai số nhị phân. Không được phép chuyển số nhị phân sang thập phân rồi cộng, và kết quả không được chứa số 0 ở đầu.

Ví dụ, nếu đầu vào là:

Đầu vào

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

Đầu ra

const output = '100100';

Ví dụ

Dưới đây là mã thực hiện:

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));

Kết quả

100100