본문 바로가기

IT/Programming

[C언어] 03.데이터 표현방식

컴퓨터는 2진수를 기반으로 데이터를 표현하고 연산도 진행한다.

2진수란 두 개의 기호를 가지고 데이터를 표현하는 방식

10진수란 열 개의 기호를 가지고 데이터를 표현하는 방식

16진수란 열여섯개의 기호를 가지고 데이터를 표현하는 방식

숫자=기호

 

2진수 10진수 16진수의 비교

 2진수

 10진수

 16진수

 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