컴퓨터는 2진수를 기반으로 데이터를 표현하고 연산도 진행한다.
2진수란 두 개의 기호를 가지고 데이터를 표현하는 방식
10진수란 열 개의 기호를 가지고 데이터를 표현하는 방식
16진수란 열여섯개의 기호를 가지고 데이터를 표현하는 방식
숫자=기호
2진수 10진수 16진수의 비교
2진수 |
10진수 |
16진수 |
0 |
0 |
0 |
1 |
1 |
1 |
10(자릿수증가) |
2 |
2 |
11 |
3 |
3 |
100(자릿수증가) |
4 |
4 |
101 |
5 |
5 |
110 |
6 |
6 |
111 |
7 |
7 |
1000(자릿수증가) |
8 |
8 |
1001 |
9 |
9 |
1010 |
10 |
10 |
1011 |
11 |
11 |
1100 |
12 |
12 |
1101 |
13 |
13 |
1110 |
14 |
14 |
1111 |
15 |
15 |
10000(자릿수증가) |
16 |
A |
10001 |
17 |
B |
10010 |
18 |
C |
10011 |
19 |
D |
10100 |
20 |
E |
10101 |
21 |
F |
10110 |
22 |
10(자릿수증가) |
10111 |
23 |
11 |
bit : 데이터의 최소단위
8bit = 1byte
"n개의 비트를 가지고 나타낼 수 있는 데이터 수는 2의n승이다."
변수 선언시
-특별한 선언이 없으면 10진수로 인식 ex) int num = 10;
-0x로 시작하면 16진수로 인식 ex) int num = 0xA;
-0으로 시작하면 8진수로 인식 ex) int num = 012;
정수의 가장 왼쪽에 있는 비트는 '부호비트'이다.
양수면 0, 음수면 1를 표시한다. 이비트를 MSB(Most Significant Bit)라고 한다.
음의 정수를 표현 할 때에는 2의 보수를 취해야 한다.
2의 보수법
1의 보수법(0과 1을 반전)을 하고 1을 더한다.
ex)
0 0 0 0 0 1 0 1 //정수 +5
1 1 1 1 1 0 1 0 // 1의 보수법 0->1로 1->0으로 바꾼다.
1 1 1 1 1 0 1 1 // 마지막으로 1을 더한다
컴퓨터가 실수를 표현하는 방식에는 오차가 존재한다.
비트 연산자
& 연산자 : 비트 단위 AND 두 개의 비트가 1일 때 1을 반환
| 연산자 : 비트 단위 OR 두 개의 비트 중 하나라도 1이면 1을 반환
^ 연산자 : 비트 단위 XOR 두 개의 비트가 서로 다를 경우 1을 반환
~ 연산자 : 비트를 0은 1로, 1은 0으로 반전
<< 연산자 : 피연산자의 비트 열을 왼쪽으로 이동시킨다.
ex. num<<3; // 세칸 왼쪽으로 이동 결과 반환
>> 연산자 : 피연산자의 비트 열을 오른쪽으로 이동시킨다.
ex. num>>3; // 세칸 오른쪽으로 이동 결과 반환
"비트 열을 왼쪽으로 1칸씩 움직일 때마다 정수의 값은 x2가 된다."
"비트 열을 오른쪽으로 1칸씩 움직일 때마다 정수의 값은 /2가 된다."
'IT > Programming' 카테고리의 다른 글
IP Header Checksum 구하기 (0) | 2016.04.19 |
---|---|
[C언어] 비트연산 문제 (0) | 2015.09.23 |
[C언어] scanf 함수 활용 문제 (0) | 2015.09.21 |
[C언어] 02.변수와 연산자 그리고 키워드 (0) | 2015.09.21 |
[C언어] 01.기초요약 (0) | 2015.09.21 |