음수 이진수 변환 - eumsu ijinsu byeonhwan

음수 이진수 변환 - eumsu ijinsu byeonhwan

2진수과 음수 표현

컴퓨터는 "덧셈"만 가능하다.

"2의 보수"를 통해 음수 기능을 구현 한다.

음수 이진수 변환 - eumsu ijinsu byeonhwan

2진수과 실수 표현

컴퓨터에서 실수도 2진수로 표현해야 한다

부동 소수점 방식을 사용하면 고정 소수점 방식보다 훨씬 더 많은 범위까지 표현할 수 있지만, 항상 오차가 존재한다

고정 소수점(fixed point) 방식 

- 하나의 실수를 정수부와 소수부의 자릿수를 미리 정해 놓고, 고정된 자릿수로 소수를 표현

음수 이진수 변환 - eumsu ijinsu byeonhwan

부동 소수점(floating point) 방식

- 하나의 실수를 가수부와 지수부로 나누어 표현하는 방식

- 32비트 (4바이트) 방식: 단정도 (single precision)

- 64비트 (8바이트) 방식: 배정도 (double precision)

음수 이진수 변환 - eumsu ijinsu byeonhwan
음수 이진수 변환 - eumsu ijinsu byeonhwan

- 부호부 (Sign) : 1비트. 숫자의 부호를 나타내며, 양수일 때 0, 음수일 때1이 됩니다.

- 지수부 (Exponent) :8비트. 지수를 나타냅니다.

- 가수부 (Mantissa) : 23비트. 가수 또는 유효숫자를 나타냅니다.

부동소수점 변환 예시

- 숫자 -314.625 >> IEEE 754 부동소수점

음수 이진수 변환 - eumsu ijinsu byeonhwan

1. 부호 확인

- 부호가 음수이므로 32비트의 가장 앞자리는 1이 됩니다.

음수 이진수 변환 - eumsu ijinsu byeonhwan

2. 이진수화

314.625 == 100111010.101 (2)

3. 정규화

음수 이진수 변환 - eumsu ijinsu byeonhwan

4. 가수부 구현

정규화된 2진수의 소수점 오른쪽 부분을 가수부 23비트의 앞부분부터 0으로 채움

음수 이진수 변환 - eumsu ijinsu byeonhwan

5. 지수부 구현

정규화된 2진수에서 지수는 8이다.

지수 8에 bias(2^k-1)를 더한 후 2진수로 변환한다.

음수 이진수 변환 - eumsu ijinsu byeonhwan
음수 이진수 변환 - eumsu ijinsu byeonhwan

음수 2진수와 10진수간의 변환 방법


2진수 11110111을 10진수로 표현하는 방법이다.

다들 아시다시피 첫번째 비트가 영이기 때문에 요놈은 음수라는걸 인지하고 변환들어가자.

1단계, 1은 0으로, 0은 1으로 변환한다.(1의보수)

00001000

2단계, 1단계에서 나온 결과에 1을 더하자. (2의보수)

00001001

3단계, 2단계 결과를 10진수화 하여 '-'기호를 붙이자.

-9

--------------------------------------------------

즉, 2진수 11110111 은 10진수로 -9 이다.

역으로 10진수 -9를 2진수로 표현하는 방법이다.
1단계, 9를 8비트로 만들어보자.
00001001

2단계, -9는 음수이기 때문에, 첫번째 부호비트를 1로 바꾸자.
10001001

3단계, 0은 1로, 1은 0으로 바꾸자.(1의보수)
단, 부호비트는 그대로 유지하자.
11110110

4단계, 3단계 결과값에 1을 더하자.
11110111

---------------------------------------------------

즉, 10진수 -9 는 2진수로 11110111 이다.