이제 비트, 논리, 비교연산을 배웠으니, 간단하게 순차 구조(3) 학습지의 과제를 풀어봅시다! 힌트가 있다면, 쉬프트는 비트(2진수로 된 수)에서 한비트씩 왼쪽, 오른쪽으로 이동하니까 2의 거듭제곱만큼 움직이겠네요~
과제2> 입력받은 정수 값의 부호를 바꿔서 출력하는 프로그램을 작성해보자.
#include<stdio.h>
void main(){
int n;
scanf("%d", &n);
printf("%d", ~n+1); // -n == ~n+1 (1의보수(~n) + 1 == 2의 보수 == 음수)
}
과제3> 다음 연산의 결과를 출력하는 프로그램을 작성해보자. (단, *연산자와 /연산자를 사용하지 않고 곱셉, 나눗셈을 구현해야한다) 3*8/4의 결과는?
#include<stdio.h>
void main(){
int n;
n=3<<3>>2; // 쉬프트연산== 피연산자 << 옮길비트개수
printf("%d", n);
}
과제4> 사용자로부터 연도를 입력받아 윤년인지 아닌지 판단하는 프로그램을 작성해보자.
#include<stdio.h>
void main(){
int y;
scanf("%d", &y);
if(y%4==0 && y%100!=0 || y%400==0 )
printf("윤년");
}
지금 보면 과제1이 없는것을 눈치챘을 수 있습니다. 그 이유가 과제1은 비트연산자와 관련되지않고 형식문자의 설정과 관련이 있어서인데요. 다음시간은 그 형식문자의 세세한 설정을 알아보고, 과제1도 같이 풀어보도록 하겠습니다.
'c언어' 카테고리의 다른 글
산술연산자 응용 (0) | 2019.07.02 |
---|---|
C언어 형식문자, 심화 (4) | 2019.07.02 |
비트, 비교, 논리 연산자 (0) | 2019.06.30 |
산술, 대입연산 예제 (0) | 2019.06.29 |
다양한 자료형, 상수화 (0) | 2019.06.29 |