给定两个十进制整数,把他们的二进制形式以十进制的运算法则相加输出结果,求 c 语言 代码
时间: 2024-12-14 19:26:02 浏览: 13
在C语言中,你可以通过位运算和常规的循环结构来将两个十进制整数转换成二进制并相加。下面是一个简单的示例代码:
```c
#include <stdio.h>
// 用于存储临时二进制结果的数组
int binarySum[32]; // 假设我们处理的最大数字不超过32位
// 该函数计算给定两个二进制字符串的和
int addBinary(int a[], int b[], int len) {
int carry = 0;
for (int i = len - 1; i >= 0; i--) {
int sum = carry + a[i] + b[i];
binarySum[i] = sum % 2; // 计算当前位的结果
carry = sum / 2; // 更新进位
}
// 如果有剩余的进位,需要添加到最高位
if (carry != 0) {
binarySum[0] = carry;
}
// 反转数组并转换回十进制
int result = 0;
for (int i = 0; i <= len; i++) {
result += binarySum[i] * pow(2, i);
}
return result;
}
int main() {
char strA[] = "1010"; // 第一个十进制数的二进制表示
char strB[] = "1011"; // 第二个十进制数的二进制表示
int lenA = strlen(strA);
int lenB = strlen(strB);
// 将字符数组转换为整数
int numA = atoi(strA);
int numB = atoi(strB);
// 对应的二进制数组
int a[lenA], b[lenB];
for (int i = 0; i < lenA; i++) {
a[i] = strA[i] - '0';
}
for (int i = 0; i < lenB; i++) {
b[i] = strB[i] - '0';
}
// 相加并打印结果
int result = addBinary(a, b, lenA > lenB ? lenA : lenB);
printf("The sum in decimal is: %d\n", result);
return 0;
}
```
这个程序首先将输入的二进制字符串转换成整数,然后使用`addBinary`函数将它们逐位相加,并最后转换回十进制显示结果。
阅读全文