tgool
Tgool
tgool
전체 방문자
오늘
어제
  • 분류 전체보기
    • Data Science
      • AI
      • Data Mining
      • ML(Machine Learning)
    • Computer Science
      • 자료구조
      • 알고리즘
      • 시스템 프로그래밍
      • 운영체제
      • 컴퓨터 구조
      • 컴퓨터 네트워크
      • 데이터 베이스
      • 파이썬
      • 자바
      • 아두이노
    • Math
      • 통계학
      • 확률론
      • 선형대수학
      • 수리통계학
      • 회귀분석
    • TOFEL
    • Git
    • Plan
    • Book
    • Working out
      • 영양과 생활
      • 운동 정보
      • 운동 기록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
tgool
Computer Science/컴퓨터 구조

[CSAPP] 2.2 Integer Representations(정수의 표시)

[CSAPP] 2.2 Integer Representations(정수의 표시)
Computer Science/컴퓨터 구조

[CSAPP] 2.2 Integer Representations(정수의 표시)

2023. 1. 19. 16:12

학습 주제

정수 표현, 변환, 확장, 숫자의 절삭 

정리한 내용

2.2 Integer Representations

2.2.1 Integral Data Types

  • C에는 다양한 정수형 데이터 타입이 존재
  • long은 유일하게 bit 수에 의존적 (32비트와 64비트에서의 범위가 다름)
  • 음수의 범위가 1크다 → signed 자료형의 특징

→ 32비트에서의 C 정수형 자료형의 범위

→ 64비트에서의 C 정수형 자료형의 범위

→ C 표준에서의 보장된 범위

  • C 표준에서 정의하는 최소한의 범위에서는 고정길이 자료형들을 제외하면 대칭적인 범위를 갖는다.(???) int 자료형은 16비트가 보장되고, long 자료형은 32비트가 보장된다.

2.2.2 Unsigned Encodings

  • B2Uw : 이진수에서 길이 w의 unsigned형 정수
  • UMaxw = 2^w -1 (나타낼 수 있는 최댓값) = [111…1]

  • B2Uw = {0,1}^w = {0, …, UMaxw}
  • B2Uw는 일대일 대응 (전단사 함수)

2.2.3 Two’s-Complement Encodings

  • B2Tw : 이진수에서 길이w의 2의 보수
  • Xw-1 : 부호 비트, 부호 비트의 “weight”는 -2^(w-1)
  • B2Uw에서의 “weight”는 +2^(w-1)
  • TMinw = -2^(w -1) (나타낼 수 있는 최소값) = [100…0]
  • TMaxw = 2^(w -1) -1 (나타낼 수 있는 최댓값) = [011…1]

  • B2Tw = {0,1}^w = {TMinw, …, TMaxw}
  • B2Tw는 일대일 대응 (전단사 함수)
  • w는 생략이 가능
  • |TMin| = |TMax| + 1 (비대칭적)
  • UMax = 2TMax + 1 (2의 보수 표현에서의 음수는 unsigned에서는 모두 양수가 된다)
  • C라이브러리의 <limits.h>에서 정수 데이터 타입의 범위를 정의
  • INT_MAX ⇒ TMax, INT_MIN ⇒ TMin, UINT_MIN ⇒ UMin

2.2.4 Conversions between Signed and Unsigned

  • casting 시에 비트의 값들은 동일하게 유지한다

  • T2U(x) = B2U(T2B(x)) , U2T(x) = B2T(U2B(x)) 를 정의할 수 있다
  • T2U(-12345) = 53191, U2T(53191) = -12345
  • 12345 + 53191 = 2^16 (weight의 차이)

2.2.5 Signed versus Unsigned in C

  • 일반적으로 상수는 signed로 간주된다
  • 12345u 처럼 “u”혹은 “U”를 추가하면 unsigned를 선언

→ 명시적 변환

→ 묵시적 변환

  • 직관적이지 못한 경우가 생김 (한 쪽이 unsigned이면 둘 다 unsigned로 묵시적 변환)
  • -2147483647-1 인 이유?
  • a curious interaction between the asymmetry of the two’s-complement representation and the conversion rules of C 

2.2.6 Expanding the Bit Representation of a Number

  • unsigned 수의 zero extension

  • signed 수의 sign extension

  • 1을 앞에 붙여도 수가 동일하다! (sign extension이 값을 보존한다)
  • 증명 : 직관 or 2^w - 2^(w-1) = 2^(w-1)을 이용

→ (unsigned) (unsigned short) sx

⇒ zero extension

→ (unsigned) sx = (unsigned) (int) sx

⇒ sign extension

2.2.7 Truncating Number(숫자 절삭)

Truncation of an unsigned number(비부호형 절삭)

  • 음수 값을 포함x
  • B2U는 Binary to Unsinged의 줄임말
  • mod는 나머지 구하는 연산자

W개 bit vector에서 K개 bit vector로 비부호형 절삭

  • 상단 식의 구체적 풀이 과정(mod는 % 연산자)
  • 나머지 연산자를 이용해서 절삭이 이루어진다.

보수란?(Complement number)

  • 상호 보완하는 수로, 임의의 수를 보완해주는 다른 임의의 수
  • 음수 표현을 위해 사용
  • r진법에서 정의되는 보수

r의 보수

▪ A + B 결과값의 각 자리마다 자리올림이 발생하고 해당 자리는 0이 될 때, B를 A에 대한 r의 보수

예) 10진수 (237)10에 대한 10의 보수를 B라고 하면

237 + B = 1000 → B = 1000 -237 = 763

– (r-1)의 보수 ▪ A + B 결과 값의 각 자리가 (r-1)이 될 때, B를 A에 대한 (r-1)의 보수

예) 10진수 (237)10에 대한 9의 보수를 B라고 하면

237 + B = 999 → 237 + B = (1000-1) → B = (1000-1) -237 = 762

 

r진수에서 (r-1)의 보수

r진법에서 임의의 정수 (N)r이 자릿수가 n개로 구성

(r^n -1) - N

  • 10진수에서 9의 보수
  • 예) (546700)10에 대한 9의 보수
  • (r^n -1) – N = (10^6 – 1) 546700 = 999999 - 546700 = (453299)
  • 2진수에서 1의 보수
  • 예) (1011001)2에 대한 1의 보수
  • (r^n -1)– N = (2 ^ 7 – 1) - 1011001 = 1111111 - 1011001 = (0100110)
  • 비트 반전: 0 → 1, 1 → 0
  • 2진수에서 2의 보수: 1의 보수로 변환 후 1를 더해준다.
  • 2의 보수에서 10진수 변환

−(2^(𝑛−1)) + 절대치 비트(부호 비트를 제외한 나머지 비트들)의 10진수 표현

Truncation of a two’s-complement number(2의 보수 절삭)

  • U2T는 Unsinged to two’s complement의 줄임말
  • B2T는 Binary to two’s complement의 줄임말
  • W개 bit vector에서 K개 bit vector로 2의 보수 절삭

  • W개의 bit vector에서 K개의 bit vector로 비부호형 절삭 후 2의 보수화

2.2.8 Advice on Signed versus Unsigned

  • 부호형(Signed)을 비부호형(Unsigned)으로 묵시적인 타입 변환을 하면 직관적이지 않은 동작을 보인다.
  • 비부호형(Unsigned) 값들은 워드 길이 데이터를 숫자 값으로 해석하지 않고 단지 비트들의 집합으로 생각하려는 경우에 매우 유용하다. Ex) 부울 조건을 설명하는 flag. 주소는 부호가 없기 때문에 비부호형이 유리

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

[CSAPP] 3.1 A Historical Perspective(역사적 관점)  (0) 2023.01.21
[CSAPP] 2.4 Floating Point(부동소수점)  (0) 2023.01.19
[CSAPP] 2.3 Integer Arithmetic(정수 연산)  (0) 2023.01.19
[CSAPP] 2.1 Representing and Manipulating Information(정보의 저장)  (1) 2023.01.19
[CSAPP] Computer Systems A Programmer's Perspective: 컴퓨터 구조 책 추천  (0) 2023.01.17
  • 2.2.1 Integral Data Types
  • 2.2.2 Unsigned Encodings
  • 2.2.3 Two’s-Complement Encodings
  • 2.2.4 Conversions between Signed and Unsigned
  • 2.2.5 Signed versus Unsigned in C
  • 2.2.6 Expanding the Bit Representation of a Number
  • Truncation of an unsigned number(비부호형 절삭)
  • W개 bit vector에서 K개 bit vector로 비부호형 절삭
  • 보수란?(Complement number)
  • Truncation of a two’s-complement number(2의 보수 절삭)
'Computer Science/컴퓨터 구조' 카테고리의 다른 글
  • [CSAPP] 2.4 Floating Point(부동소수점)
  • [CSAPP] 2.3 Integer Arithmetic(정수 연산)
  • [CSAPP] 2.1 Representing and Manipulating Information(정보의 저장)
  • [CSAPP] Computer Systems A Programmer's Perspective: 컴퓨터 구조 책 추천
tgool
tgool

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.