병렬가감산기 계산결과 에러. 도움요청
AimAsse..(minus3mv)
2019-11-24 17:01
추천 0
코드링크) 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
);
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
;
}
![viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73ded85fa11d028314c091b806630224048cd6fbd1352c69c46168098bbadecdabb5a5fdfcd6173adc5c5f0e47bc9870fdc15cfe5b1c32975619d097e2b8f37]()
![viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73ded85fa11d028314c091b806630224048cd6fbd1352c69c46168098bbadecdabb5a5fdfcd6173adc5c5f0e47bc9870fdc15cfebe4937a704c9578b3cdf01d]()
어디서부터 잘못된건지 모르겠어.. 계산값이 이상하게 나옵니다
댓글 0