<script>
let a = '1010'
let b = '1011'
function res(a, b) {
let sum = 0
let carry = 0
let result = []
let numA = a.toString().split('').reverse() // 0101
let numB = b.toString().split('').reverse() // 1101
let length1 = numA.length < numB.length ? numA.length : numB.length
for (let i = 0; i < length1; i++) {
result.push(numA[i] ^ numB[i] ^ carry)
if (numA[i] * 1 + numB[i] * 1 + carry > 1) {
carry = 1
} else {
carry = 0
}
}
if (numA.length === numB.length) {
if(carry===1){
result.push(carry)
}
}
else {
let maxNum = numA.length > numB.length ? numA : numB //1101
for (let j = length1; j < maxNum.length; j++) {
result.push(maxNum[j] ^ carry)
if (maxNum[j] * 1 === 1 && carry === 1) {
carry = 1
} else {
carry = 0
}
}
if (carry === 1) {
result.push(carry)
}
}
sum = result.reverse().join('')
console.log(sum);
console.log(carry);
}
res(a, b)
</script>
二进制两个字符串求和
最新推荐文章于 2024-03-20 14:35:00 发布