728x90

정리

C는 두가지 접근 방법으로 비트들에 접근한다.

1. 비트 단위 연산자들을 사용

2. 구조체 비트 필드 생성

 

컴퓨팅 하드웨어는 2진수 체계와 일접한 관련이 있다.

메모리와 레지스터에 있는 비트들의 on/off 상태를 2진수인 1과 0으로 나타낼 수 있기 때문이다.

 

2진수와 관련된 8진수 표기와 16진수 표기를 인식한다. 2진수 숫자 하나가 1비트를 나타내듯이, 8진수 숫자 하나는 3비트를 나타내고, 16진수 숫자 하나는 4비트를 나타낸다. 이러한 관계로 인해 2진수를 8진수나 16진수로 쉽게 변환할 수 있다.

 

C는 몇가지 비트 단위 연산자를 제공한다. 비트단위 연산자는 어떤 값에 있는 개별적인 비트들을 독립적으로 처리할 수 있기 때문이다.

1. 비트 단위 부정 연산자(negation : ~) : 피연산자에 있는 각 비트들을 반전시킨다. 즉 1->0, 0->1

2. 비트 단위 논리곱 연산자(AND : &) : 두 피연산자로 부터 하나의 값을 만든다. 서로 대응하는 위치에 있는 각 비트들이 둘다 1이면 결과 비트가 1이고 둘중에 하나 이상이 0이라면 해당 결과 비트도 0이다.

3. 비트 단위 논리합 연산자 (OR : |) : 두 피연산자로 부터 하나의 값을 만든다. 이때 두 피연산자의 서로 대응하는 비트중 하나라도 1이면 결과 비트가 0이 된다.

4. 비트 단위 배타적 논리합 연산자(Exclusive OR : ^) : 두 피연산자로 부터 하나의 값을 만든다. 대응하는 비트가 다를때 1이고 대응하는 비트가 0이면 결과 비트도 0이다.

 

C는 왼쪽 시프트 연산자(<<)와 오른쪽 시프트 연산자(>>)를 제공한다.

이 두 연산자는 주어진 비트 수만큼 비트 패턴을 왼쪽이나 오른쪽으로 이동시켜 새로운 값을 만든다. 왼쪽 시프트 연산의 경우 이동시키면서 비워지는 비트에 0을 채운다. 오른쪽 시프트 연산의 경우 값이 unsigned 형이라면 비워지는 비트에 0을 채우지만, signed 데이터형의 경우 컴파일러에 따라 다르다.

 

728x90

'Programming > C' 카테고리의 다른 글

C #define에 전달인자 사용하기  (0) 2019.07.10
C 전처리기와 C 라이브러리  (0) 2019.07.10
C 비트 필드  (0) 2019.07.10
C 비트 연산  (0) 2019.07.10
C언어 공부 37  (0) 2019.07.08

+ Recent posts