[디지털공학에서 배운 내용]
Unsigned Binary Integers
- n-bit number로 주어진다
- $x = x_{n-1}2^{n-1} + x_{n-2}2^{n-2} + ... + x_12^1 + x_02^0$
- 0~$2^{n-1}$의 범위로 나타낼 수 있음
- (예) 0000 0000 0000 0000 0000 0000 0000 1011$2$ = 0 + ...... + $1\times 2^3 + 0\times 2^2 + 1\times 2^1 + 1\times 2^0 = 0 + ... + 8 + 0 + 2 + 1 = 11{10}$
- unsigned 32 bit binary integer은 0~+4,294,967,295의 범위의 숫자 표현 가능
음수를 타나내기 위한 2s-Complement Signed Integers
2의 보수 방식
- n-bit number 로 주어진다
- $x = x_{n-1}2^{n-1} + x_{n-2}2^{n-2} + ... + x_12^1 + x_02^0$
- $-2^{n-1}$ ~ $+2^{n-1} -1$의 범위로 나타낼 수 있다.
- 맨 앞 비트 = 부호비트(sign bit) : 1이면 음수, 0이면 양수를 나타냄
- 양수인 경우는 unsigned 와 같은 표현으로 나타난다/
- (예) -2를 나타내고 싶다면 +2를 나타내는 0000 0000 ... 0010 에서
1의 보수를 취한 1111 1111 .... 1101에 +1을 해
1111 1111 .... 1110으로 나타내줄 수 있음
+2 : 0000 .... 0010, -2 : 1111 .... 1110
- (예2) 1111 1111 1111 1111 1111 1111 1111 1100$2$
= $-1 \times 2^{31} + 1 \times 2^{30} + .... + 1 \times 2^2 + 0 \times 2^1 + 0 \times 2^0$
= -2,147,483,648 + 2,147,483,644 = - 4${10}$
- 32bits를 사용하면 -2,147,483,648 ~ +2,147,483,647 의 범위를 나타낼 수 있다.
- 특정 숫자들
- 0 : 0000 0000 .... 0000
- -1 : 1111 1111 .... 1111
- 음수 최댓값 : 1000 0000 .... 0000
- 양수 최댓값 : 0111 1111 .... 1111

Sign Extension