[공부기록]signed and unsigned

·2024년 4월 13일

컴퓨터 구조

목록 보기
2/11

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)
000000
000111
001022
001133
010044
010155
011066
011177
10008-8
10019-7
101010-6
101111-5
110012-4
110113-3
111014-2
111115-1

Casting (Signed 와 unsigned) 😜

  • 명시적 형변환( explicit casting )
int tx, ty;
unsigned us, uy;

tx = (int ) ux;
uy = (unsigned) ty;
  • 암묵적 형변환 ( implicit casting)
    할당 및 프로시저 호출을 통해 암시적 캐스팅도 발생한다.
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
profile
어리둥절 빙글빙글 돌아가는 코딩세상~

0개의 댓글