본문 바로가기
컴퓨터시스템구조

[컴퓨터시스템구조] 05. Signed, Unsigned, 2의 보수

by 파스텔코랄 2023. 10. 14.

부호 없는(Unsigned) 정수

  • n비트 숫자
    • x = x_(n-1)2^(n-1) + x_(n-2)2^(n-2) + ... + x_0 2^0
  • 범위: 0 ~ +2^n - 1
  • 예제
    • 0000 0000 0000 0000 0000 0000 0000 1011_2 = 11_10
  • 32 bits 비트 사용
    • 0 ~ +4,294,967,295

 


 

부호 있는(Signed) 정수

  • n비트 숫자가 주어지면
    • x = -x_(n-1)2^(n-1) + x_(n-2)2^(n-2) + ... + X_0 2^0
  • 범위: -2^(n-1) ~ +2^(n-1)-1
  • 예제
    • 1111 1111 1111 1111 1111 1111 1111 1100_2 = -4_10
  • 32 bits 비트 사용
    • -2,147,483,648 ~ +2,147,483,647

 

  • MSB : 부호 비트
    • 음수 : 1
    • 음수가 아닌 경우 : 0
  • -(-2^(n-1)) 표현 불가
  • 음수가 아닌 숫자는 동일한 부호 없는 2의 보수 표현
  • 특정 수
    • 0 : 0000 0000 … 0000
    • -1 : 1111 1111 … 1111
    • 최저값 : 1000 0000 … 0000
    • 최고값 : 0111 1111 … 1111

 


 

2의 보수

  • 뒤집고 1 더하기
  • 예시:  +2
    • +2 = 0000 0000 … 0010_2
    • -2 = 1111 1111 … 1101_2 + 1 = 1111 1111 … 1110_2

 


 

부호 확장

  • 더 많은 비트를 사용하여 숫자 표현
  • MIPS 명령어
    • addi : 직접 값 확장
    • lb, lh : 로드된 바이트/하프워드 확장
    • beq, bne : 변위 확장
  • 부호 비트(MSB) 왼쪽으로 복제
    • Unsigned : 0 확장
  • 예 : 8비트 → 16비트
    • +2 : 0000 0010 → 0000 0000 0000 0010
    • -2 : 1111 1110 → 1111 1111 1111 1110

댓글