안깨지는 코드) http://colorscripter.com/s/fTS5NZt
참고한 병렬가감산기 자료) https://blog.opid.kr/79
이제 거의 다 됐는데 아주 사소한 오류 하나가 남아서 질문좀 하겠음
깨질수도 있는 코드)
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define DIGIT_SIZE 8 void preprocessingXY(char* preX, char* preY, int* X, int* Y); void fullAdder(int* X, int* Y, int* carry, int* sum); void checkPrintXY(int* X, int* Y, int* carry, int* sum); int main(int argc, char const* argv[]) { int X[DIGIT_SIZE] = { 0, }, Y[DIGIT_SIZE] = { 0, }; char preX[DIGIT_SIZE], preY[DIGIT_SIZE]; int carry[DIGIT_SIZE + 1] = { 0, }; int sum[DIGIT_SIZE] = { 0, }; int decimalSum = 0; int multiple = 1; int i; printf("Input X7~X0 binary.n"); printf("-- ex: 10101100 --n"); printf("X : "); scanf("%s", preX); printf("Input Y7~Y0 binary.n"); printf("-- ex: 01001111 --n"); printf("Y : "); scanf("%s", preY); printf("Input 0(add) or 1(sub)n"); scanf("%d", &carry[0]); preprocessingXY(preX, preY, X, Y); fullAdder(X, Y, carry, sum); checkPrintXY(X, Y, carry, sum); for (i = 0; i < DIGIT_SIZE; i++) { decimalSum += sum[i] * multiple; multiple *= 2; } printf("nDecimal number is %dn", decimalSum); return 0; } void preprocessingXY(char* preX, char* preY, int* X, int* Y) { int i, j; for (i = 0, j = DIGIT_SIZE - 1; i < DIGIT_SIZE; i++, j--) { X[i] = (int)preX[j] & 1; Y[i] = (int)preY[j] & 1; } } void checkPrintXY(int* X, int* Y, int* carry, int* sum) { int i; printf(" "); for (i = DIGIT_SIZE - 1; i >= 0; i--) { printf("%3d", X[i]); } if (carry[0] == 0) { printf("n[+]"); } else if (carry[0] == 1) { printf("n[-]"); } for (i = DIGIT_SIZE - 1; i >= 0; i--) { printf("%3d", Y[i]); } printf("n"); printf("----------------------------n "); for (i = DIGIT_SIZE - 1; i >= 0; i--) { printf("%3d", sum[i]); } } void fullAdder(int* X, int* Y, int* carry, int* sum) { int i; for (i = 0; i < DIGIT_SIZE; i++) { sum[i] = (X[i] ^ (Y[i]) ^ carry[0]) ^ carry[i]; carry[i + 1] = (carry[i] & (X[i] ^ (Y[i] ^ carry[0]))) | (X[i] & (Y[i] ^ carry[0])); } }아래는 VS 2019에서 나는 에러.. 값은 제대로 나옴
아래는 VS Code에서 나는 에러.... 값이 제대로 안나와
저기 X 맨 앞에 표시되는 숫자는 항상 0으로 나와
저걸 고쳐야 하는데 어디가 잘못된건지 모르겠어
즉, X 입력 하라고 할때 맨 앞에 1만 안집어 넣으면
VS Code 에서도 계산 오류는 없는거 같거든.
해결했다