
SIGN BIT 😎
음수 : 1
양수 : 0
2의 보수 표현에서, 가장 상위 비트는 부호를 나타낸다.
음수가 아닐 때는 0이고, 음수일 때는 1입니다.
signed (부호 o)
unsigned(부호 x)
부호 있는 것이 디폴트이다.
ex)
int 4; // 부호 o
unsigned int 4; 부호 x
간단한 예시
10 = 0 1 0 1 0
-16 8 4 2 1 => 8 + 2 = 10
-10= 1 0 1 1 0
-16 8 4 2 1 => -16 + 4 + 2 = -10
숫자 범위 🫡
unsigned
min = 0
max = 2^n -1
signed
min = -2^(n-1)
max 2^(n-1) -1
T : signed
U : unsigned
|TMin| = TMax + 1
(비대칭 범위)
UMax = 2 * TMax + 1
| U(X) | T(X) | |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | -8 |
| 1001 | 9 | -7 |
| 1010 | 10 | -6 |
| 1011 | 11 | -5 |
| 1100 | 12 | -4 |
| 1101 | 13 | -3 |
| 1110 | 14 | -2 |
| 1111 | 15 | -1 |
Casting (Signed 와 unsigned) 😜
int tx, ty;
unsigned us, uy;
tx = (int ) ux;
uy = (unsigned) ty;
tx = ux;
uy = ty;
Sign Extension (부호 확장) ➕
w 비트 부호 있는 정수 x 가 주어졌을 때, 동일한 값을 가진 w + k 비트 정수로 변환한다.
이 때, 부호 비트(msb, 가장 앞에 있는 비트)를 k 개 복사한다.

ex)
01010 - > 001010
10 10
10110 - > 110110
-10 -10
*msb = sign bit 이기 때문에 부호 유지
Truncation (소거) ➖
주어진 k+w 비트 정수 x를 w 비트 정수 x로 변환한다.
상위 k 비트를 삭제하면 된다.

ex)
2 = 00010
->
2 = 0010
-6 = 11010
->
-6 = 1010
10 = 01010
->
-6 = 1010
-10 = 10110
->
6 = 0110