컴퓨터 내부의 언어 체계 : 정수와 실수의 표현방법

EOH·2023년 2월 28일
0
post-thumbnail

🐪 정수의 비트 표현 방법

1️⃣ 양의 정수 비트 표현

양수를 비트로 표현하는 방법은 간단하다. 10진수로 표현된 양의 정수를 2진수로 변환하여 비트로 표현할 수 있다.
예를 들어 123은 2진수로 변환하면 1111011이다. 즉 7자리의 2진수가 되는 것이고, 7비트의 수라고 말할 수 있다.
10진수를 2진수로 표현하는 방법은 따로 포스팅을 해두었다. 아래 링크를 참고하면 된다.
<10진수를 2진수로 변환하는 방법>

2️⃣ 음의 정수 비트 표현

음수를 표현하는 방법은 조금 복잡하다. 여러 가지 표현법이 있는데 그 중 2의 보수표현법을 주로 사용한다.
2의 보수 표현법은 모든 비트를 뒤집고 +1을 하는 것이다. 이 방법은 0도 1가지로 표현가능하고 연산도 가능하여 음수는 주로 2의 보수표현법을 사용해 표기한다.

✨ 부호와 크기 표현법, 1의 보수표현법을 사용하지 않는 이유
: 부호와 크기 표현법은 부호만 바꾸고 숫자는 똑같이 표현하는 방법이다. 이 방법은 0을 표현하는 방법이 두 가지라 비용이 낭비되며 XOR과 AND를 통한 덧셈 계산을 사용할 수 없어 비효율 적이라 사용하지 않는다.
1의 보수 표현법은 비트를 모두 뒤집는 방법이다. 이 방법도 0을 두 가지 방식으로 표현한다는 문제가 있고 덧셈을 할 때 순환올림을 사용해야해서 비효율적이다.

🐫 실수의 비트 표현 방법

1️⃣ 고정표현법 (fixed point)

실수는 고정표현법과 부동표현법 두 가지 방법으로 표현할 수 있다.
고정표현법은 실수를 정수부와 소수부로 나누고 소수부의 자릿수를 미리 정하여 고정된 자릿수의 소수를 표현하는 방식이다. 예를 들어 5비트가 있으면 제일 첫번째 비트는 부호를, 앞 쪽 2비트는 정수를 뒷 쪽 2비트는 실수를 표현하기로 정해놓는 것이다.

출처: TCP코딩스쿨 <부동 소수점 수>

이 방법은 잘 작동하긴 하지만 많은 양의 수를 표현하기 어려워 범용 컴퓨터에서는 잘 사용하지 않는다.

2️⃣ 부동표현법 (floating point)

: 실수를 가수부와 지수부로 나누어서 표현하는 방식이다.지수의 크기에 따라 소수점의 위치가 이동되므로 부동표현법(floating point)라는 이름이 붙었다.
가수부는 소수점 왼쪽이 한 자리 뿐인 소수를 의미하고, 지수부는 소숫점을 표현하는 10의 거듭제곱을 의미한다.
예를 들어 0.0012는 1.2 * 10⁻³으로 표현할 수 있다.
2진법으로 표기하려면 지수부분을 2를 밑으로하는 수로 표현하면 된다.

3️⃣ IEEE 부동 소수점 방식

부동표현법은 불편한 점은 많지만 일반적인 컴퓨터에서 소수를 표현할 때 채택하는 방식이다. 부동표현법을 더 정밀하게 사용하기 위해 IEEE 754라는 표준법을 따른다.
IEEE표준법은 정밀도를 높이기 위해 몇 가지 방법을 사용한다.

  • 정규화
    : 가수를 조정하여 맨 앞(왼쪽)에 0이 없게 만드는 것이다.
  • 맨 왼쪽 비트 생략하기
    맨 왼쪽 비트는 항상 1이므로 1을 생략하고 사용한다. 이로 인해 가수에 1비트를 더 사용할 수 있다.

부동소수점은 두 가지 수를 많이 사용한다. 32비트의 float형 실수는 기본정밀도 부동소수점 수를 사용하고 64비트의 double형 실수는 2배 정밀도 부동소수점 수를 사용한다.
이름처럼 2배 정밀도수가 기본 정밀도수보다 정밀도도 높고 표현하는 수도 많다.

출처: TCP코딩스쿨 <부동 소수점 수>


➡️ Hello, Computer World! 시리즈 소개 보러가기

profile
에-오

0개의 댓글