用c语言编写两个函数,均传入两个char数组,用于二进制的加法与减法
时间: 2023-11-28 08:49:29 浏览: 57
以下是用C语言编写的两个函数,一个用于二进制加法,一个用于二进制减法。注意,这里的二进制是以字符数组的形式传入,并且假定输入的两个二进制数长度相等。
```c
#include <stdio.h>
#include <string.h>
void binary_add(char *a, char *b, char *result) {
int carry = 0; // 进位标志
int len = strlen(a);
for (int i = len - 1; i >= 0; i--) {
int sum = a[i] - '0' + b[i] - '0' + carry; // 每一位的和
result[i] = sum % 2 + '0'; // 计算当前位的结果
carry = sum / 2; // 计算进位标志
}
}
void binary_subtract(char *a, char *b, char *result) {
int borrow = 0; // 借位标志
int len = strlen(a);
for (int i = len - 1; i >= 0; i--) {
int diff = a[i] - b[i] - borrow; // 每一位的差
if (diff < 0) { // 需要借位
diff += 2;
borrow = 1;
} else {
borrow = 0;
}
result[i] = diff + '0'; // 计算当前位的结果
}
}
```
这两个函数的调用方式如下:
```c
char a[] = "101011";
char b[] = "110101";
char result[7];
// 计算 a + b
binary_add(a, b, result);
printf("%s + %s = %s\n", a, b, result);
// 计算 a - b
binary_subtract(a, b, result);
printf("%s - %s = %s\n", a, b, result);
```
阅读全文