티스토리 뷰

카테고리 없음

정수의 표현

dddonging19 2022. 11. 5. 23:27

2진수 : 0, 1, 부호 및 소수점으로 표현

-13.62510 = -1101.1012

부호 없는 정수 표현의 예

00111001 = 57

00000000 = 0

00000001 = 1

10000000 = 128

11111111 = n-비트 2진수를 부호 없는 정수 A로 변환하는 방법

A = an-1 × 2n-1 + an-2 × 2n-2 + ... + a1 × 21 + a0 × 20

소수와 음수의 표현

최상위 비트인 an-1의 좌측에 소수점이 있는 소수의 10진수 변환방법

A = an-1 × 2-1 + an-2 × 2-2 + ... + a1 × 2-(n-1) + a0 × 2-n

23 22 21 20 2-1 2-2 2-3

1 1 0 1 . 1 0 1

= 1×23 + 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 1×2-3

= 8 + 4 + 1 + 0.5 + 0.125 = 13.625

음수 표현 방법

부호화-크기 표현(signed-magnitude representation)

1의 보수 표현(1's complement representation)

2의 보수 표현(2's complement representation)

부호화-크기 표현

맨좌측 비트는 부호 비트, 나머지 n-1 개의 비트들은 수의 크기(magnitude)를 나타내는 표현 방식

[예] + 9 = 0 0001001 + 35 = 0 0100011

- 9 = 1 0001001 - 35 = 1 0100011

부호화-크기로 표현된 2진수(an-1 an-2 ... a1 a0)를 10진수로 변환

A = (-1)an-1 (an-2 × 2n-2 + an-3 × 2n-3 + ... + a1 × 21 + a0 × 20)

0 0100011 = (-1)0(0×26+1×25+0×24+0×23+0×22+1×21+1×20)

= (32 + 2 + 1) = 35

1 0001001 = (-1)1(0×26+0×25+0×24+1×23+0×22+0×21+1×20)

= - (8 + 1) = - 9

결점

덧셈과 뺄셈을 수행하기 위해서는 부호비트와 크기 부분을 별도로 처리

0 표현이 두 개 존재 n-비트 단어로 표현할 수 있는 수들이 2n 개가 아닌, (2n - 1)개로 감소

0 0000000 = + 0

1 0000000 = - 0

 

보수 표현

1의 보수(1's complement) 표현

모든 비트들을 반전 (0  1, 1 0)

2의 보수(2's complement) 표현

모든 비트들을 반전하고, 결과값에 1을 더한다

[예]

+ 9 = 0 0001001 + 35 = 0 0100011

- 9 = 1 1110110 (1의 보수) - 35 = 1 1011100 (1의 보수)

- 9 = 1 1110111 (2의 보수) - 35 = 1 1011101 (2의 보수)

8-비트 보수로 표현된 정수들

8-비트 2진수로 표현할 수 있는 10진수의 범위

1의 보수 : - (27 - 1) ∼ + (27 - 1)

2의 보수 : - 27 ∼ + (27 - 1)

2의 보수 -> 10진수 변환

2의 보수로 표현된 양수(an-1 = 0)를 10진수로 변환하는 방법

A = an-2 × 2n-2 + an-3 × 2n-3 + ... a1 ×21 + a0 ×20

2의 보수로 표현된 음수(an-1 = 1)를 10진수로 변환하는 방법

A = - 2n-1 + (an-2×2n-2+ an-3×2n-3+… a1×21+ a0×20 )

[예] 10101110 = - 128 + (1 × 25 + 1 × 23 + 1 × 22 + 1 × 21)

= - 128 + (32 + 8 + 4 + 2) = - 82

[다른 방법] 10101110  01010010 으로 먼저 변환한 후,

01010010 = - (1 × 26 + 1 × 24 + 1 × 21)

= - (64 + 16 + 2) = - 82

https://jtstory.tistory.com/151

https://jtstory.tistory.com/151

비트 확장 (Bit Extension)

데이터의 길이(비트 수)를 늘리는 방법

목적: 데이터를 더 많은 비트의 레지스터에 저장하거나 더 긴 데이터와의 연산 수행

[예] 8-비트 데이터를 16-비트 데이터로 확장

부호화-크기 표현의 경우 : 부호 비트를 맨좌측 위치로 이동시키고, 그 외의 비트들은 0으로 채운다

+21 = 00010101 (부호화-크기, 8 비트)

+21 = 0000000000010101 (부호화-크기, 16 비트)

-21 = 10010101 (부호화-크기, 8 비트)

-21 = 1000000000010101 (부호화-크기, 16 비트)

2의 보수 표현의 경우 : 확장되는 상위 비트들을 부호 비트와 같은 값으로 세트 = 부호 비트 확장(sign-bit extension)

+21 = 00010101 (2의 보수, 8 비트)

+21 = 0000000000010101 (2의 보수, 16 비트)

-21 = 11101011 (2의 보수, 8 비트)

-21 = 1111111111101011 (2의 보수, 16 비트)

댓글