초보 연습문제 질문입니다.
칸나
질문 제목 : 16비트 부호 없는정수의 값을 이동연산자를 사용하여 우로 1비트 이동시키면 최하위 비트값이 제거된다.
이 때 제거되는 최하위 비트의 값을 최상위 비트에 채워 넣는 우로테이션(right rotation)기능의 프로그램. 질문 내용 : tc30으로 코딩해 보았는데 다음과 같은 에러들이 뜹니다.(두려워요ㅜㅜ;;)실행가능한 수정 좀 부탁드립니다. #includestdio.h
#includeconio.h // 이 부분은 잘 모르지만 제가 본 동강에선 꼭 넣더라구요...
void main()
{
unsigned int a,b,c,d,n,n;
clrscr();// 이건 알지만 이것두...
printf(enter positive decimal number : );//양의 변수a 에 10진수를 입력합니다.
scanf(%d, &a);
printf(enter shift number : );//시프트할 만큼 입력합니다
scanf(%d, &n);
d=a;// 최초의 a값은 먼저 보관
for(n=1;n=n;n++)--- possibly incorrect assignment
{// a를16진수의 형태에서n만큼 우로 시프트 하는데
a=an;
b=0;
c=a;
if((a&0x1)==0x1)/* 한 비트씩 우로 시프트할 때 마다10진수를 입력받은a의
 sp; 16진수값의우측끝 비트수가 0인지 1인지를 확인해서 */
b=2^(16-n);// 1일때 좌측끝으로 붙여 넣어줍니다. 우측 끝에서 밀린 수는 소멸되고요..
c=c+b; // 이 걸 시프트만큼 수행하는데 밀린 수가 1이 아닌 zero일 때도 있죠
else c=a;--- misplaced else//zero일 때에도 좌측 끝으로 붙여 넣어줍니다.
}
printf(the number %d has been shifted by %d from initial number,c,n,d);
/* 최초의 수가 시프트 했을 때 16진수의 우측끝에서 소멸된 0 혹은 1이 시프트한
만큼 이동해서 좌측 끝에 붙는다는 것을 표출합니다.*/
getch();// 알지만 이것두...
}--- function should return a value
-
민트
어떻게 동작하는지 간단히 설명좀 넣어주시면 좋을것같아요