본문 바로가기
문법관련/C

3. 상수와 데이터 표현방법

by print_soo 2024. 5. 31.

<정수와 실수>

  • 정수: -2, -1, 0, 1, 2 ….
  • 실수: 0.1, 0.2, 0.3

<진법 비교 표>

진법 기수 (Base) 사용 숫자 예시 (10진법 숫자 42의 표현) 설명 프로그래밍 표기(42)

10진법 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 42 일반적으로 사용하는 숫자 체계 42
8진법 8 0, 1, 2, 3, 4, 5, 6, 7 52 8을 기수로 하는 숫자 체계 052
16진법 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 2A 16을 기수로 하는 숫자 체계 0x2A
2진법 2 0, 1 101010 2를 기수로 하는 숫자 체계  

각 진법의 변환 예시

10진법 (Decimal, Base 10)

  • 사용 숫자: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 예시:
    • 10진법 숫자 **42**는 4 * 10^1 + 2 * 10^0 = 42

8진법 (Octal, Base 8)

  • 사용 숫자: 0, 1, 2, 3, 4, 5, 6, 7
  • 예시:
    • 10진법 숫자 42를 8진법으로 변환하면 52 (5 * 8^1 + 2 * 8^0 = 42)

16진법 (Hexadecimal, Base 16)

  • 사용 숫자: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
  • 예시:
    • 10진법 숫자 42를 16진법으로 변환하면 2A (2 * 16^1 + 10 * 16^0 = 42)

2진법 (Binary, Base 2)

  • 사용 숫자: 0, 1
  • 예시:
    • 10진법 숫자 42를 2진법으로 변환하면 101010 (1 * 2^5 + 0 * 2^4 + 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 42)

<정규화>

💡정규화란? 소수점 앞에 0이 아닌 한 자리 수를 놓고 지수 형태로 바꾼 것

 

 

실수를 정규화시키고 지수 형태로 표기하기

0.0000315 → 0.00315 * 10^-2 → 3.15 * 10^-5 -> 3.15e-5

 

프로그래밍 상으로 표기할 때는 10은 e로 지수는 옆으로 해서 3.15e-5로 사용한다.

 


정수를 2진수로 

정수는 4byte로 번역이 된다. (32bit)

 

10을 2진수로 바꿔보자.

MSB <- [ 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 ] -> LSB

가장 앞쪽에 있는건 MSB(Most Significant Bit) 가장 뒤에 있는건 LSB(Least Significant Bit)라고 한다.

 

-10을 2진수로 바꿔보자.

 

 

[2의 보수]

 

1.음수를 2진수로 바꾸려면 양수인 값의 2진수를 모두 반대로 변경한다.

MSB <- [ 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 ] -> LSB

 

 

2. 1을 더한다.

MSB <- [ 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 ] -> LSB

 


 

따라서 두개를 더해 보면 ? 0이 된다.

           1   1   1   1   1   1                                  
  MSB <- [ 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 ] -> LSB
+)MSB <- [ 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 ] -> LSB
------------------------------------------------
       1   0   0   0   0   0   0   0   0

 

 

❓❓“앞에 나온 1이 있는데 왜 0인가?”❓❓
한 바이트는 총 8bit 이기때문에 1은 날아가게 된다.

 


 

 

<실수>
실수를 계산할 때는 오차가 생길 수 있다.

'문법관련 > C' 카테고리의 다른 글

5. scanf 함수  (1) 2024.06.10
4-2. 자료형 마다 저장할 수 최대값과 최솟값  (0) 2024.06.03
4. 변수 선언 및 초기화  (0) 2024.06.03
2. printf - 형식지정자와 이스케이프 시퀀  (0) 2024.05.31
1. 비트와 바이트  (0) 2024.05.31