C언어 복습 및 비트 연산자
#1. 관계연산자
학습목표 - 관계연산자에 결과 값을 이해할 수 있다.
관계연산자
연산자의 결과는 참(1) 아니면 거짓(0)이다.
ex) 1<3 -> 1
대입 연산자의 결과는 그 결과 자체이다.
ex) A=3 -> A 이고 결론적으로는 3을 뜻한다.
모든 연산은 결과를 필요로 한다.
-> 논리 연산자는 값이 나와야 하고 비교 연산자는 참 거짓이 나오야 한다.
책 p/64, 66 예제 실습
#2. 콤마 연산자/예약어/진법
학습목표 - 콤마 연산자/예약어/진법에 대해서 이해하고 활용할 수 있다.
p/67 콤마 연산자(,)
p/67 예제)
한꺼번에 변수를 사용할 때 콤마(,)를 사용할 수 있다.
//위와 같이 변수를 선언할 수 있지만 가독성이 좋지 않음으로 따로 변수를 선언하는 것이 //다.
콤마(,)는 여러 줄에 있는 것들을 합하여 줄 때 사용한다.
[ p/69, 03-5 연산자와 우선순위와 결합방향 ]
연산 시 한 줄에 여러 가지 연산기호를 쓰지 마라. 가독성이 떨어진다. 굳이 써야 한다면 괄호를 써서 먼저 연산해야 하는 값을 표시해 준다.
// 외울 필요 없이 헷갈리면 둥근 괄호로 묶어줘라.
// 지금까지 배우지 않은 연산자가 있으나 후에 언급할 것이다.
같은 서열에 있는 연산자는 결합방향에 따라서 연산을 해준다.
입력 연산자에서는 다른 것은 넣지 않고 표현 형식과 저장위치만 입력한다.
p/75 예약어
해당 페이지에 나온 명령어들은 변수명으로 쓸 수 없다.
// 'main‘ 예약어가 아니다. entry point이다.
진법은 한자리에서 가장 큰 수가 무엇인가를 따지는 것이다.
ex) 16진수 F(진법 -1 까지의 수가 표현)
//이진수는 C compiler에서 지원하지 않는다.
#3. 실수의 표현
학습목표 - 실수의 표현 방법을 이해한다.
8진수를 입력하려면 0으로 시작하여 숫자를 넣어주면 된다.
ex) int num3 = 012
16진수를 입력하려면 0x로 시작하여 숫자를 넣어주면 된다.
ex) int num2 = 0xA
정수와 실수의 표현방식
가장 왼쪽에 부호를 적어서 수를 표현하는 방식을 magnitude방식이라고 한다.
실습 - float의 저장형태 이해)
float의 저장될 수(0.125)를 직접 메모리에 넣어보자.
#4. &, &&, shift 연산자(비트 연산자)
학습목표 - 각 비트 연산의 값의 도출과정을 이해할 수 있다.
p/91, 예제
double로 할 경우 오차가 없어지는 것이 아니라 보이지 않는 자리에 오차가 생길 뿐이다.
1&2 -> and 연산자
&iNum -> 주소 연산자
3&iNum -> and 연산자
// 연산 순서가 헷갈릴 경우 ()를 써서 우선순위를 지정해주자.
&&는 논리연산자로써 좌 우항을 덩어리(참 혹은 거짓)로 계산한다.
&의 경우 좌 우측에 있는 숫자를 이진수로 바꾼 후 자리로 비교하여 참과 거짓을 판단한다.
실습 - &연산자와 &&연산자의 구분)
1 1 1 1
& 1 0 0 1
----------
1 0 0 1
그러므로 결과 값은 9가 나온다.
//비트 연산자는 후에 칩에 코딩할 때 많이 쓰임으로 잘 알아둘 필요가 있다.
“^”은 XOR 연산을 한다. 다르면 1 같으면 0이 나오는 연산자이다.
ex) 10 ^ 7
1 0 1 0
^ 0 1 1 1
---------
1 1 0 1
"~"은 틸드 연산자라 부르고 이진수가 뒤집어져 버리는 결과가 나온다.
ex) ~1 = -2
Shift 연산(<<, >>)
>>는 오른쪽으로 다 한 칸씩 옮겨지고 빈칸은 양수일 때 0으로 채워진다.
ex) iNum >> 1 는 iNum을 오른쪽으로 1씩 한 칸씩 민다는 뜻이다.
! signed - 부호에서는 빈자리가 1로 채워진다.
<<는 왼쪽으로 다 한 칸씩 옮겨지고 빈칸은 무조건 0으로 채워진다.
'Busan IT > 제어언어' 카테고리의 다른 글
복습 및 디버깅(debugging) (0) | 2015.02.23 |
---|---|
연산과 변수의 최적화 (0) | 2015.02.17 |
C프로그래밍 책과 함께 기초 복습 (0) | 2015.02.13 |
반복문을 활용한 배열과 포인터 연산 (0) | 2015.02.12 |
제어문(if~else, for, while) (0) | 2015.02.11 |