<정수와 실수>
- 정수: -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 |