如何添加两个相同大小的二进制数组?
How do I add two same size binary arrays?
在这个函数中,参数first_complement2
和second_complement2
是2个数组,包含2个2的补码的二进制数。假设给定的两个 2 的补码具有相同的大小。函数returns 一个int数组,包含与给定的2的补码相同大小的加法结果的二进制数字。
int* complement2_add(int first_complement2[], int* second_complement2[], int size)
{
int i;
int carry = 0;
int result_array = (int*)malloc(size * sizeof(int));
for(i = size-1; i>=0; i--)
{
result_array[i] = (first_complement2[i] + second_complement2[i] + carry) %2; //it says "Invalid operands to binary % (have 'int *' and int)"
carry = (first_complement2[i] + second_complement2[i] + carry)/2 ; //as well as "Invalid operands to binary / (have 'int *' and int)"
}
result_array[i] = carry; // and here "subscripted value is neither an array nor pointer nor vector
int j;
for(j = 0; j < size; j++)
{
printf("%d", result_array[j]);
}
return result_array;
}
两期:
首先,你的函数声明不正确。 second_complement2
是一个数组,所以它应该声明为 int []
或 int *
:
int* complement2_add(int first_complement2[], int second_complement2[], int size)
其次,您的 result_array
声明不正确。因为您正在为数组动态分配 space,所以它应该是 int *
。另外,不要将 malloc
的结果转换为 C:
int *result_array = malloc(size * sizeof(int));
在这个函数中,参数first_complement2
和second_complement2
是2个数组,包含2个2的补码的二进制数。假设给定的两个 2 的补码具有相同的大小。函数returns 一个int数组,包含与给定的2的补码相同大小的加法结果的二进制数字。
int* complement2_add(int first_complement2[], int* second_complement2[], int size)
{
int i;
int carry = 0;
int result_array = (int*)malloc(size * sizeof(int));
for(i = size-1; i>=0; i--)
{
result_array[i] = (first_complement2[i] + second_complement2[i] + carry) %2; //it says "Invalid operands to binary % (have 'int *' and int)"
carry = (first_complement2[i] + second_complement2[i] + carry)/2 ; //as well as "Invalid operands to binary / (have 'int *' and int)"
}
result_array[i] = carry; // and here "subscripted value is neither an array nor pointer nor vector
int j;
for(j = 0; j < size; j++)
{
printf("%d", result_array[j]);
}
return result_array;
}
两期:
首先,你的函数声明不正确。 second_complement2
是一个数组,所以它应该声明为 int []
或 int *
:
int* complement2_add(int first_complement2[], int second_complement2[], int size)
其次,您的 result_array
声明不正确。因为您正在为数组动态分配 space,所以它应该是 int *
。另外,不要将 malloc
的结果转换为 C:
int *result_array = malloc(size * sizeof(int));