정수를 표현하는 방식
일반적으로 사람들은 10진수를 사용해서 숫자를 표현한다. 물론 다른 방식으로도 숫자를 표현하는 것이 가능하다.
- 16진수(Hexadecimal Number) : 0x7B
- 10진수(Decimal Number) : 123
- 8진수(Octal Number) : 173
- 2진수(Binary Number) : 1111011
모두가 123을 표현하고 있다.
실수(real number)를 표현하는 방식
2.75는 0.5 + 0.25 이므로 0010.1100로 표현이 가능하다.
고정소수점(Fixed Point)
실수는 보통 정수부(integer)와 소수부(decimal)로 나눌 수 있다.
따라서 실수를 표현하는 가장 간단한 방식은 소수부의 자릿수를 미리 정하고, 고정된 자릿수의 소수를 표현하는 것이다.
이를 고정소수점 방식이라고 부른다.
32비트 실수를 고정 소수점 방식으로 표현하면 다음과 같다.
하지만 이 방식은 정수부와 소수부의 자릿수가 크지 않으므로, 표현할 수 있는 범위가 매우 적다는 단점이 있다.
고정소수점 방식은 직관적이지만 아주 큰 수나 아주 작은 수를 표현하는데 적합하지 않다.
부동소수점(Floating Point)
부동소수점에서 부동은 움직이지 않는다는 뜻의 부동(不動)이 아니라, 오히려 그 반대의 의미로 소수점이 떠다니며 움직인다는 의미의 부동(浮動)이다. IEEE 754 표준 방식으로 숫자를 부동소수점으로 표현하는 방식을 알아보자.
- 부호부(Sign) : 숫자의 부호를 나타내며, 양수일 때 0, 음수일 때 1이 된다.
- 지수부(Exponent) : 지수를 나타낸다.
- 가수부(Mantissa) : 가수 또는 유효숫자를 나타낸다.
부동소수점으로 표현하는 방법
- 2진수를 정규화(normalize) 한다.
- 처음 1비트에 0은 양수, 1은 음수로 표시한다.
- 지수부에 정규화 과정에서 얻어낸 지수에 bias를 더한 값을 이진수로 변환해서 채운다.
- 가수부에 소수 부분의 값으로 채웁니다. 남는 자리는 0으로 채운다.
부동소수점 표현방식은 과학적 표기법을 기반으로 하고 있다. 위의 포스팅을 참고하자.
정규화(normalize)
정규화란 2진수를 1.xxx * 2n 형태로 나타내는 것이다. 10진수 7.625를 정규화하면 2진수로 변환하면 111.101이다. 그리고 정규화하면
1.11101 * 22
값 2를 얻습니다. 2에 bias인 127을 더해준다.
즉, 129(2 + 127) 이진수로 표현하면 10000001(128 + 1)을 지수부에 넣어준다.
가수부 입력
x.11101에 해당하는 11101을 입력하고 남는 자리를 0으로 채워준다.
함께 읽으면 좋은 글
참고 사이트
'하드웨어 > 컴퓨터 구조' 카테고리의 다른 글
CPU의 작동 (8) | 2023.07.28 |
---|---|
프로그램 카운터(Program Counter) (3) | 2023.07.21 |
릴레이를 이용한 논리연산 (6) | 2023.07.11 |
전기로 덧셈을 표현하는 반가산기, 전가산기 (6) | 2023.07.07 |
폰노이만 구조 (20) | 2023.06.27 |
댓글