You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改10位二进制数加法代码实现含进位的11位运算结果

10位二进制字符串加法适配11位结果的修改方案

原有代码问题

原有代码仅实现了二进制位的异或运算,完全没有处理进位逻辑:两个二进制1相加时仅将当前位设为0,没有将进位1传递给高位计算,也没有预留最高位的进位存储位置,无法得到正确的11位结果。

修改思路

  1. 新增carry变量记录每一步的进位值,初始为0
  2. 从两个10位字符串的最低位(最右侧字符)开始向左遍历计算
  3. 每一位的运算逻辑为:当前位两个数值相加 + 低位进位,按模2取当前位结果,除以2得到新的进位
  4. 10位全部计算完成后,剩余的进位直接作为第11位的最高位值

修改后代码(类C语法)

#define MAX 10
// str1、str2为长度10的二进制输入字符串
char str3[MAX + 2]; // 预留11位结果位 + 1位字符串结束符
int i = MAX - 1; // 从输入字符串的最低位下标(9)开始遍历
int carry = 0;

while(i >= 0) {
    int bit1 = str1[i] - '0';
    int bit2 = str2[i] - '0';
    int sum = bit1 + bit2 + carry;
    str3[i + 1] = (sum % 2) + '0'; // 当前位结果存储在str3下标1~10位置
    carry = sum / 2; // 更新进位
    i--;
}
// 处理最终进位,作为第11位最高位
str3[0] = carry + '0';
str3[MAX + 1] = '\0'; // 补字符串结束符

效果验证

输入1010101010和1111111111运算后,str3输出结果为11010101001,符合预期。如果不需要无进位场景下的前置0,可以判断carry == 0时从str3[1]开始输出即可。

内容的提问来源于stack exchange,提问作者Anchr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:36:10