Limetime's TimeLine
article thumbnail
Published 2017. 9. 6. 00:48
데이터 표현 방식 C&C++
반응형

데이터 표현 방식

숫자 = 기호

0~1 (0, 1) : 2 진수

0~9 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) : 10 진수

0~F (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) : 16 진수


ㆍ 2 진수

2 진수의 경우 0과 1의 숫자로 구성되며, 왼쪽 부터 2^0으로 시작함


ㆍ 비트와 바이트

비트 (Bit) : 데이터의 최소 단위. 2 진수 값(0과 1)중 하나를 저장할 수 있는 메모리 크기 (1/8 Byte)

바이트 (Byte) : 8개의 비트 묶음. 2 진수 값 8개를 저장할 수 있는 메모리 크기 (8 Bit)

ㆍ C언어에서 진수 표현

10 진수 = 특별한 선언이 없다. ex) 10은 그냥 10, 3은 그냥 3

16 진수 = 0x (영 엑스)로 시작 ex) 9는 0x9

8 진수 = 0 (영)으로 시작 ex) 7은 07


ㆍ 정수의 표현 방식

부호 비트 (MSB, Most Significant Bit) : 0은 양수, 1은 음수

ex) 00000101 => +5


ⓐ 음의 정수 표현 : 2의 보수법 (1단계 : 1의 보수 (NOT연산 : 1 -> 0, 0 -> 1), 2단계 : 1을 더함)

0    0    0    0    0    1    0    1

-> +5에 1의 보수를 취해주자. (NOT 연산)

1    1    1    1    1    0    1    0

=> 1을 더하자.

1    1    1    1    1    0    1    1 

=> -5 


ⓑ 음의 정수를 양의 정수로 표현

1    1    1    1    1    0    1    1

=> -5에 1의 보수를 취해주자. (NOT 연산)

0    0    0    0    0    1    0    0

=> 1을 더하자.

0    0    0    0    0    1    0    1

=> +5


ⓒ 같은 정수. 양의 정수와 음의 정수의 덧셈

+5 +(-5) = 0


0 0 0 0 0 1 0 1    => +5

1 1 1 1 1 0 1 1    => -5


답 : 1 0 0 0 0 0 0 0 0 (1은 올림수로 버려진다. 결과는 '0')


ㆍ 실수의 표현 방식

실수의 표현 방식 => 부동 소수점 오차 But, 넓은 범위의 실수 표현 가능


ㆍ 비트 연산자

& : 비트 단위로 AND 연산 (결합 방향 →)    ex) 0&0=0, 0&1=0, 1&0=0, 1&1=1

| : 비트 단위로 OR 연산 (결합 방향 →)    ex) 0|0=0, 0|1=1, 1|0=1, 1|1=1

^ : 비트 단위로 XOR 연산 (결합 방향 →)    ex) 0^0=0, 0^1=1, 1^0=1, 1^1=0

~ : 단항 연산자이면서 비트 단위로 NOT 연산(보수 연산=비트 반전) (결합 방향 ←)    ex)  ~0=1, ~1=0

=> MSB(부호 비트)와 데이터 비트 모두 반전. 그리고 바이트 크기를 넘어서는 비트는 버려짐

<< : 피연산자의 비트열을 왼쪽으로 이동 (정수의 값은 두 배씩 증가) (결합 방향 →)    ex) 8<<2 //8의 비트열을 왼쪽으로 2만큼 이동

>> : 피연산자의 비트열을 오른쪽으로 이동 (정수의 값은 2로 나누어짐) (결합 방향 →)    ex) 8>>2 //8의 비트열을 오른쪽으로 2만큼 이동

=> MSB가 오른편으로 밀려나면 CPU에 따라서 1 또는 0을 채운다.

반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!