n진수
2진수, 8진수, 10진수, 16진수
10진수를 n진수로 변환
- 원하는 타진법의 수로 나눈 뒤 나머지를 거꾸로 읽는다.
- 예시
- (149)_10 = (10010101)_2= (95)16
- = (225)_8
n진수를 10진수로 변환
- (135)_8 = 1 * 8^2 + 3 * 8^1 + 5 * 8^0 = (93)_10
- 소수점이 있을 때
- (135.12)_8 = 1 * 8^2 + 3 * 8^1 + 5 * 8^0 + 1 * 8^(-1) + 2 * 8^(-2) = (93.15625)_10
n진수간 변환
음의 정수 표현
- 1의 보수
- 부호와 절대값으로 표현된 값을 부호 비트를 제외한 나머지비트들을 0은 1로, 1은 0으로 변환한다.
- -6 = 1000000000000110 : 부호와 절대값 표현
- -6 = 1111111111111001 : 1의 보수 표현
- 부호와 절대값으로 표현된 값을 부호 비트를 제외한 나머지비트들을 0은 1로, 1은 0으로 변환한다.
- 2의 보수
- 1의 보수방법으로 표현된 값의 최하위 비트에 1을 더한다.
- -6 = 1111111111111010 : 2의 보수 표현
- 1의 보수방법으로 표현할 때 0 값에 대해 -0이 생기기 때문에 2의 보수 표현을 주로 사용
- 1의 보수방법으로 표현된 값의 최하위 비트에 1을 더한다.
실수
실수의 표현
- 소수점 이하 4자리를 10진수로 표현
- 2진 실수를 10진수로 변환하는 방법
- 예 1001.0011
- 컴퓨터는 실수를 표현하기 위해 부동 소수점(floating-point) 표기법을 사용
- 부동 소수점 표기 방법은 소수점의 위치를 고정시켜 표현하는 방식
- 1001.0011 = 1.001001 * 2^3
실수를 저장하기 위한 형식
- 단정도 실수 (32비트)
- 배정도 실수 (64비트)
- 가수부 : 실수의 유효 자릿수들을 부호화된 고정 소수점으로 표현한 것
- 지수부 : 실제 소수점의 위치를 지수 승으로 표현한 것
- 단정도 실수의 가수 부분을 만드는 방법
- 예 1001.0011
- 정수부의 첫 번째 자리가 1이 되도록 오른쪽으로 시프트
- 소수점 이하를 23비트로 만든다.
- 소수점 이하만을 가수 부분에 저장
- 지수 부분은 시프트 한 자릿수 만큼 증가 또는 감소
- 예 1001.0011
- 단정도 실수의 지수부분을 반드는 방법
- 지수부에는 8비트가 배정
- 숫자로는 0-255까지 표현 가능하지만, 음수 값을 나타낼 수 있어야 하므로 익세스(excess) 표현법 사용
- 익세스 표현법 : 지수부의 값을 반으로 나누어 그 값을 0으로 간주하여 음수지수와 양수지수를 표현하는 방법
- 단정도 표현에서의 지수부 익세스 표현
- 1001.0011을 단정도 실수로 표현하면 다음과 같다.
- 컴퓨터는 실수를 근사적으로 표현한다.
- 이진법으로 표현 할 수 없는 형태의 실수는 정확한 값이 아니라 근사 값으로 저장되는데 이때 생기는 작은 오차가 계산 과정에서 다른 결과를 가져온다.
- 실수 자료형의 유효 자릿수
- 32 비트 실수형 유효자릿수(10진수) : 6
- 64 비트 실수형 유효자릿수(10진수) : 15
- 파이썬에서는 내부적으로 더 많은 비트를 사용해서 훨씬 넓은 범위의 실수 표현 가능
'Algorithm' 카테고리의 다른 글
Quick Sort (퀵 정렬) (0) | 2021.04.19 |
---|---|
Merge Sort (병합 정렬) (0) | 2021.04.19 |
비트 연산 (0) | 2021.04.15 |
시간 복잡도 개념 및 설명 (0) | 2021.04.13 |
Tree / Binary Tree / Heap (트리, 이진 트리, 힙) (0) | 2021.04.07 |