주어진 정수형 데이터(num)를 n비트 오른쪽으로 circular shift하는 코드를 작성하시오.
이때, 출력은 2진수로 하시오.
- 입력은 scanf 사용
- 입력된 (원본)데이터와 쉬프트된 (결과)데이터를 2진수로 각각 출력
#include<stdio.h>
void ppp(int);
int main(void) {
int num;
int shift;
int i;
unsigned int check = 1;
scanf_s("%d %d", &num, &shift);
ppp(num);
for (i = 0; i < shift; i++) {
if (num >= 0) {
if ((num & check) == 0) {
num = num >> 1;
}
else {
num = num >> 1;
num = num | 0x80000000;
}
}
else {
if ((num & check) == 0) {
num = num >> 1;
num = num & 0x7fffffff;
}
else {
num = num >> 1;
}
}
}
ppp(num);
return 0;
}
void ppp(int num) {
unsigned int check = 0x80000000;
int i;
for (i = 0; i < 32; i++)
{
if ((num & check) == 0)
{
printf("0");
}
else {
printf("1");
}
check = check >> 1;
}
printf("\n");
}
함수 선언을 메인내에서 하면, 그 함수의 존재는 메인 밖에 모른다.
즉 다른 함수에서는 프린트 함수를 사용 못 한다.
함수 선언만 외부에서 하고, 나머지는 메인 내에 넣어라.
전역변수를 남발하는 건 좋지 않다.
'c&c++' 카테고리의 다른 글
자료형의 변환 (0) | 2021.09.14 |
---|---|
선언하는 자료형에 따라 상수의 자료형도 결정되는가? (0) | 2021.09.14 |
16진수 입력을 10진수로 출력하는 코드 작성 (0) | 2021.09.14 |
2진수 출력 코드 실습 (0) | 2021.09.14 |
헷갈릴 수 있는 자료형의 변환 (0) | 2021.09.14 |