#include <stdio.h>
void exam1();
void exam2();
void exam3();
void exam4();
void exam5();
void exam6();
void exam7();
void exam8();
void exam9();
void exam10();
void exam11();
void exam12();
void exam13();
void exam14();
void exam17();
void main()
{
exam17();
}
/*하나의 숫자를 입력받아서
오른쪽에서 3번째 자리의 비트가 0인지 1인지를 알려주는
프로그램을 구현하시오
*/
void exam17()
{
int num, result;
printf("숫자 입력 : "); scanf("%d", &num);
result = (num & 4) ? 1 : 0; //
printf("%d 의 3번째 자리의 비트값 : %d\n", num, result);
}
/*
사용자로부터 하나의 정수를 입력 받아서
그 수를 왼쪽으로 3자리 시프트 연산한 결과를 출력하는 프로그램을 구현하시오.
*/
void exam16()
{
int num, result;
printf("숫자 입력 : "); scanf("%d", &num);
result = num << 3;
printf("%d << 3 : %d\n", num, result);
}
/*
사용자로부터 하나의 정수를 입력 받아서
그 수의 제곱수를 출력하는 프로그램을 구현하시오
*/
void exam15()
{
int num, result;
//사용자로부터 숫자 하나를 입력받는다.
printf("숫자 입력 : ");
scanf("%d", &num);
//제곱승
result = num*num;
printf("%d의 제곱 : %d\n", num, result);
}
/*
사용자로부터 두개의 수를 입력받은 후
첫번째 수를 두번째 수로 나눈 나머지를 구하는 프로그램을
구현하시오.
*/
void exam14()
{
int num1;
int num2;
int mod;
//사용자로부터 숫자 하나를 입력받는다.
printf("숫자 입력 : ");
scanf("%d", &num1);
//사용자로부터 숫자 하나를 입력받는다.
printf("숫자 입력 : ");
scanf("%d", &num2);
//나머지 구하기
mod = num1 % num2;
printf("%d를 %d로 나눈 나머지 : %d\n", num1, num2, mod);
}
void exam13()
{
int xy = 140;
int x, y; // 12, 8
x = xy & 0xf ; // xy : 1000 1100
// 15 : 0000 1111
// & : 0000 1100
y = xy & 0xf0; // xy : 1000 1100
// f0 : 1111 0000
// & : 1000 0000
y = y >> 4;
printf("%d : %d\n", x, y);
}
void exam12()
{
int x = 12;
int y = 8;
//1byte로 가정 (상위 4bit에 y값, 하위 4bit에 x값)
int xy = 0;
//하위 4bit에 x값 저장(켜기)
xy = xy | x; // xy : 0000 0000
// x : 0000 1100
// | : 0000 1100
//상위 4bit에 y값 저장
y = y << 4; // y : 0000 1000
// <<4: 1000 0000
xy = xy | y; // xy : 0000 1100
// y : 1000 0000
// | : 1000 1100
printf("xy비트연산결과 : %d\n", xy); //140
}
void exam11()
{
//1byte로 가정
int result = 0; // 0000 0000
//========== 비트 켜기 ( | ) =================
//3번째 비트
result = result | 4; // result : 0000 0000
// 4 : 0000 0100
// | : 0000 0100
//5번째 비트
result = result | 16; // result : 0000 0100
// 16 : 0001 0000
// | : 0001 0100
//===============================================
//비트 마스크 ( & )
//2번째 비트의 상태 확인
printf("%d\n", result & 1); // result : 0001 0100
// 1 : 0000 0010
//================================================
//비트끄기 (&~)
//3번째 비트 끄기
result = result & ~4; // result : 0001 0100
// ~4 : 1111 1011
}
void exam10()
{
int a = 15; // 15의 2진표현 : 0000 1111
int b = 25; // 25의 2진표현 : 0001 1001
int c;
c = a | b; //0001 1111
printf("15와 25의 비트단위 논리합(|) : %d \n", c);
c = a&b; // 0000 1001
printf("15와 25의 비트단위 논리곱(&) : %d \n", c);
c = a^b; // 0001 0110
printf("15와 25의 비트단위 배타적 논리합(^) : %d \n", c);
c = ~a; // 1111 0000
printf("15의 비트단위 부정(~) : %d \n", c);
return 0;
}
void exam9()
{
int a = 1, b = 0, c = -1, result;
// && 는 ||보다 우선순위가 높다
// 항상 구문의 연산은 왼쪽 ==> 오른쪽
result = a++ || ( b++ && ++c );
printf("%d , %d , %d , %d\n", a, b, c, result);
}
void exam8()
{
int a = 1, b = 0, c = -1, result;
result = a++ && b++ || c++;
printf("%d , %d , %d , %d\n", a, b, c, result);
}
void exam7()
{
int num1 = 100, num2 = 200, num3 = 300;
int result;
result = num1 < num2 && num1 < num3; // T && T
printf("%d\n", result); //1
}
void exam6()
{
//거짓(false) : 0
//참(true) : 0이외 모든 수
int num1 = -1, num2 = 200;
int result = num1 && num2; // &&
printf("%d\n", result); //1
}
void exam5()
{
int inputnumber;
srand(time(NULL));
int randomvalue = (rand() % 10) + 1; // 1 ~ 10
printf("입력 : ");
scanf("%d", &inputnumber);
printf("%d\n", inputnumber == randomvalue);
}
void exam4()
{
int num1 = 10, num2 = 20;
int result = num1 < num2;
printf("%d\n", result); // 1
}
void exam3()
{
int a = 10, b, c = 10;
// c = a++ + a++ + a++ + a++;
// printf("%d, %d\n", a, c); // 14, 40
c = a++ + ++a + ++a + ++a;
printf("%d, %d\n", a, c); // 14, 44
}
void exam2()
{
int a = 10, b, c = 10;
// b = ++a + ++a; //b = 12 + 12
// printf("%d : %d\n", a, b); //12, 24
// b = a++ + a++; // 10 + 10
// printf("%d : %d\n", a, b); // 12, 20
b = a++ + ++a; // 11 + 11
printf("%d : %d\n", a, b); // 12, 22
}
void exam1()
{
int a = 10, b, c = 10;
b = a++;
printf("%d : %d\n", a, b); // 11, 10
printf("%d\n", a++); // 11
b = ++a; // b = 13
}
댓글