Busan IT/제어언어2015. 2. 16. 13:45

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으로 채워진다.

 

 

 

반응형
Posted by newind2000