코드링크) http://colorscripter.com/s/2DNjMEA


병렬가감산기 참고자료) https://blog.opid.kr/79




#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void initValue(char* processingX, char* processingY, int* X, int* Y); void processingXY(char* processingX, char* processingY, int* X, int* Y, int* carry); int fullAdder(int* X, int* Y, int* carry, int i); int main(int argc, char const* argv[]) {     char operatorSign;     char processingX[8];     char processingY[8];     int X[8], Y[8];     int carry[8];     int sum = 0;     int xMultiple = 1;     initValue(processingX, processingY, X, Y);     printf("Input Binary Number X sign Y\n");     printf("ex: 10100110 + 10010\n");     printf("ex: 110100 - 1101\n");     printf("X and Y size = 8 digits\n");     scanf("%s %c %s", processingX, &operatorSign, processingY);     if (operatorSign == '+') {         carry[0] = 0;     }     if (operatorSign == '-') {         carry[0] = 1;     }     processingXY(processingX, processingY, X, Y, carry);     for (size_t i = 0; i < 8; i++) {         sum = fullAdder(X, Y, carry, i);         sum *= xMultiple;         xMultiple *= 2;     }     printf("%d\n", sum);     // for (size_t i = 0; i < 8; i++)     // {     // printf("%d", X[i]);     // }     // printf("\n");     // for (size_t i = 0; i < 8; i++)     // {     // printf("%d", Y[i]);     // }     return 0; } void initValue(char* processingX, char* processingY, int* X, int* Y) {     for (size_t i = 0; i < 8; i++) {         *(processingX + i) = '0';         *(processingY + i) = '0';         *(X + i) = 0;         *(Y + i) = 0;     } } void processingXY(char* processingX, char* processingY, int* X, int* Y, int* carry) {     for (size_t i = 0, j = 7; j != 0; i++) {         if (processingX[i] == '0' || processingX[i] == '1') {             *(X + j) = (int)processingX[i] & 1;         }         j--;     }     for (size_t i = 0, j = 7; j != 0; i++) {         if (processingY[i] == '0' || processingY[i] == '1') {             *(Y + j) = ((int)processingY[i] & 1) ^ carry[0];         }         j--;     } } int fullAdder(int* X, int* Y, int* carry, int i) {     int sum;     sum = 0;     sum = (X[i] ^ Y[i]) ^ carry[i];     if (i < 7) {         carry[i + 1] = (X[i] ^ Y[i]) | (X[i] & Y[i]);     }     return sum; }






어디서부터 잘못된건지 모르겠어.. 계산값이 이상하게 나옵니다