이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

2. 수 체계: 진수 변환과 이진수의 실수/음수 표현(Number System)

  • 2020.04.11 08:12
  • 학부 수업/디지털시스템

컴퓨터에서의 수 체계

컴퓨터에서는 크게 4가지 수 체계를 사용한다.

  • 10진수
  • 2진수
  • 8진수
  • 16진수

$a$진수는 $a$의 $n$승을 하나의 자리로 가지는데, 예를 들어 10진수 213은 아래와 같다.

$213_{(10)} = 2 \times 10^2 + 1 \times 10^1 + 3 \times 10^0$

이진수에서의 실수

이진수에서의 실수 표현도 다른 수 체계와 다르지 않다. 소수점 아래로 내려간 자리들은 $2$의 $-n$승의 값을 갖는다. 예를들어, $101.101_{(2)}$는 아래와 같다.

$\begin{align*}
101.101_{(2)} &= (1 \times 2^2) + (0 \times 2^1) + (1 \times 2^0) + (1 \times 2^{-1}) + (0 \times 2^{-2}) + (1 \times 2^{-3}) \\
&= (1 \times 4) + (0 \times 2) + (1 \times 1) + (1 \times \frac{1}{2}) + (0 \times \frac{1}{4}) + (1 \times \frac{1}{8}) \\
&= 5.625_{(10)}
\end{align*}$

이러한 표현을 부동소수점Floating Point이라 한다.

십진수/이진수 변환

십진수에서 이진수로의 변환은 십진수를 계속 2로 나누고, 나머지를 역순으로 나열하면 된다.

실수부에서는, 실수를 2로 곱하여 나온 정수부를 취하는 것을 곱한 결과가 $0.0$이 나올때까지 반복하면 된다.

8진수와 16진수

10진수에서 8진수/16진수로의 변환은 2진수를 거쳐도 되고, 10진수를 8/16으로 나눠 2진수 변환하듯이 해도 된다.

이진수의 연산

이진수의 사칙연산은 10진수와 같은 방법으로 할 수 있다.

또한, 10진수를 왼쪽으로 한 자리 옮기면 $\times 10$ 한 것과 같은 것 처럼, 이진수를 왼쪽으로 한 자리 옮기면 수를 $\times 2$ 한 것과 같은 효과를 갖는다.

음수의 표현

이진수에서 음의 정수를 표현하는 방법은 크게 4가지가 있다.

Excess Notation

숫자를 0부터 세는 대신, 조금 더 앞에서부터 세는 방법.

예를들어, 본인이 3비트로 음수 $-3$을 표현하고 싶다면, 3의 excess notation을 적용하면 된다.

 NumberBits
-3000
-2001
-1010
0011
1100
2101
3111

Excess Notation을 적용한 수의 계산은 아래와 같다.

$ 실제 담긴 숫자 = 원래 숫자 - \text{excess notation}\\
원래 숫자 = 실제 담긴 숫자 + \text{excess notation}$

Sign Magnitude

맨 앞의 첫 비트를 음수/양수를 구분하는 비트로 사용하는 방법이다.

첫 비트가 0이면 양수, 1이면 음수를 의미한다.

이 방법은 편리하지만, 0을 위한 비트가 $\pm$ 두가지 존재하는 문재가 있다. 또한, 비트의 덧셈과 뺄셈 연산이 복잡하다.

Ones' Complement (1의 보수)

1의 보수 표현법은 양수는 그대로 두고, 음수는 1의 보수화 시켜 음수와 양수를 구분한다.

1의 보수는 이진수의 모든 값을 역전시켜 구할 수 있다.

예를들어, $1101_2$의 1의 보수는 $0010_2$이다.

1의 보수는 변환이 쉽고, 덧셈 뺄셈 연산이 쉽지만, 여전히 0을 위한 비트가 두 가지 존재하기에 비효율적이다.

Two's Complement (2의 보수)

2의 보수 표현법은 1의 보수와 비슷하게 양수는 그대로 두고, 음수는 2의 보수를 취해 구분한다.

2의 보수는 1의 보수에 1을 더한 값이다.

2의 보수의 장점은 맨 첫 비트를 부호 비트로 쓸 수도 있고, 0을 위한 값이 000 하나만 존재한다는 것이다.

음의 2의 보수를 10진수로 변환할 때는, 모든 자리를 역전시키고 1을 더한 다음, 음수 기호를 붙여 10진수로 변환하면 된다! 정말 간단하다.

2의 보수 연산

2의 보수의 가장 큰 장점은 뺄셈 연산을 덧셈으로 간단히 처리할 수 있다는 것이다.
2의 보수로 변환된 음수를 양수에 바로 더한 뒤, 넘친 비트를 지우면 된다!

$\begin{align*}
18 = &0001 0010\\
-5 = &1111 1011\\
1&0000 1101 = 13
\end{align*}$

2의 보수의 오버플로Overflow

  • 두 양수의 덧셈이 음수라면 오버플로가 일어난 것이다.
    • 가장 높은 비트가 1이면 오류가 난 것이다!
  • 두 음수의 덧셈이 양수라면 오버플로가 일어난 것이다.
    • 가장 높은 비트가 0이면 오류가 난 것이다!
  • CPU에서 이런 오류를 잡기가 편하다.

각 방법들의 범위 차이

10진수Sign Magnitude
$2^{n-1}, 2^{n-1} -1$
2's Complement
$2^{n-1}, 2^{n-1} -1$
Unsigned
$2^n, 2^n -1$
000000000000
100010001001
200100010010
300110011011
401000100100
501010101101
601100110110
701110111111
-8 1000 
-711111001 
-611101010 
-511011011 
-411001100 
-310111101 
-210101110 
-110011111 

'학부 수업 > 디지털시스템' 카테고리의 다른 글

5. 불 대수 (Boolean Algebra)  (0) 2020.04.11
4. 디지털 논리 회로 (Logic Gates)  (0) 2020.04.11
3. 부동소수점을 활용한 실수 표현 (IEEE 754 Standard Float)  (0) 2020.04.11
1. 디지털 시스템 개요  (0) 2020.04.10
세종대학교 디지털 시스템 강의노트  (0) 2020.04.10

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 4. 디지털 논리 회로 (Logic Gates)

    4. 디지털 논리 회로 (Logic Gates)

    2020.04.11
  • 3. 부동소수점을 활용한 실수 표현 (IEEE 754 Standard Float)

    3. 부동소수점을 활용한 실수 표현 (IEEE 754 Standard Float)

    2020.04.11
  • 1. 디지털 시스템 개요

    1. 디지털 시스템 개요

    2020.04.10
  • 세종대학교 디지털 시스템 강의노트

    세종대학교 디지털 시스템 강의노트

    2020.04.10
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (283)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (49)
      • 회고 & 계획 (20)
      • 내 이야기 (9)
      • 리뷰 (4)
      • 군대에 간 공돌이 (10)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / AXZ. © 백지오. Designed by Fraccino.

티스토리툴바