쉬프트와 덧셈을 이용한 곱셈 프로그래밍
소미
질문 제목 :쉬프트와 덧셈을 이용한 곱셈 프로그래밍질문 요약 :- 피승수 16 비트, 승수 8 비트의 곱셈을 쉬프트와 덧셈을 이용하여
결과 값을 구하는 프로그래밍 작성하기.- 입력 피승수 16 비트 이진 값, 승수 8 비트 이진 값- 출력 : 피승수 16 비트 이진 값, 승수 8 비트 이진 값,
계산 결과 이진 값질문 내용 :#include stdio.hint main() {
char x[17], y[9], z[24], step[24], tmp[24]; //피승수, 승수, 계산 결과값, 계산의 각 단계별의 비트를 저장
int i, j, k;
int cnt = 0;
int n, m, p = 0;
printf(16bit 2진수 피승수: );
scanf(%s, &x);
fflush(stdin);
printf(8bit 2진수 승수: );
scanf(%s, &y); for(j = 7; j = 0; j--){ //승수의 배열을 뒤에서 부터 check
//연산 단계
cnt = 8-j;
printf(%d 단계,cnt);
for(i = 0; i 24; i++){
if(y[j] == 1){ //승수의 bit 값이 1이라면
//피승수의 값이 그대로 내려오게 될 것.
for(k = 0; k 24; k++){ //연산 결과값이 저장된 배열 반복
for(i = 0; i 16; i++){ //피승수의 값을 연산의 결과값에 저장하는 과정
step[k] = x[i]; //피승수의 값이 그대로 내려옴
z[k] = step[k]; //결과 값에는 첫번째 계산 결과가 오게됨
tmp[k] = z[k];
//두번째 단계로 넘어가는 과정은,= !!아래 화살표!!
}//printf(%d, z[k]);
; } //z[k] += step[k]; //최종 결과값 배열 z에 각 단계별 연산 결과 값을 더해주는 과정
//승수의 비트 값이 0일 경우
}else step[k] = 0; //그 단계의 계산 결과는 0
z[i] = tmp[i] + (step[i] 1);//= !!여기!! 두번째 단계의 계산 과정은 j번째 step배열의 맨 마지막 비트가 한자리 왼쪽으로 shift 된 상태여야함
//(다음 단계의 계산으로 넘어갈때는 왼쪽으로 한자리씩 shift되는 과정을 거침
printf(%d, z[i]);
}
} getchar();
getchar();
return 0;
}
혼자서 이렇게 짜봤는데
두서없고 복잡하고
결과는 안나오고
3일짼데...ㅠㅠㅠㅠㅠㅠ
고수님들 도와주세요!!!!!!!!!!!!ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ