공부/컴퓨터 구조

[Chap2] 데이터의 표현

esyeonge 2021. 5. 1. 00:55

01 진법과 진법 변환

[1] 디지털 정보의 단위

bit

; 컴퓨터 정보를 나타내는 가장 기본 단위 (0과 1 두 가지 상태만 저장 가능)

  • nibble == 4bit, byte == 8bit
  • n 비트로 2^n 개의 상태 표현이 가능

byte

  • 영어는 1바이트(52개 필요), 한글은 2바이트가 필요(11172개 필요)

[2] 진법

기수

; 진법을 나타내는 기본 수

  • 기수가 10이면 10진법, 기수가 2면 2진법

10진법

; 각 자릿수를 0-9 사이의 수로 나타냄.

소수점을 왼쪽은 10의 양의 거듭 제곱, 소수점 오른쪽 10의 음의 거듭 제곱

2진법

; 0과 1 기호 2개를 사용

8진법

; 0부터 7까지 기호 8개 사용

 

cf) 컴퓨터 구조나 어셈블리어에서는 16진수를 많이 사용

[3] 진법 변환

; 정수 부분은 바꾸려는 진법의 기수로 나누어 그 나머지를 적고, 소수 부분은 기수를 곱해 정수가 되는 부분을 적음

n진수를 10진수로 변환

case 1 : 2진수를 10진수로 변환

case 2: 8진수를 10진수로 변환

case 3: 16진수를 10진수로 변환

10진수를 2진수로 변환

10진수를 8진수로 변환

10진수를 16진수로 변환

2진수-8진수-16진수 상호 변환

2진수 3개 == 8진수

2진수 4개 == 16진수

 

02 정수 표현

고정 소수점 수

; 소수점이 마지막 자리 뒤에 고정되어 소수점을 표현하지 않는 수

  • 양의 정수, 0, 음의 정수로 표현

부동 소수점 수

; 소수점이 떠다니면서 움직임

  • 소수점의 위치가 수 크기에 따라 이동

[1] 보수의 개념과 음수

부호 비트

; 최상위 비트를 이용하여 양수는 0, 음수는 1로 표시

2진수의 음수와 양수 표현 방법

부호와 절댓값 방식

; 10진수를 2진수로 바꾼 그대로 + 최상위 비트에 부호 표시

1의 보수 방식

; 0은 1로, 1은 0으로 바꿈

2의 보수 방식

; 1의 보수를 구한 후 +1

cf) 부호와 절댓값 방식의 1의 보수 방식이 컴퓨터 연산에 부적합한 이유 : -0과 +0이 존재하기 때문

r의 보수와 r-1의 보수

; 10진수에는 9의 보수와 10의 보수가 있음

ex) 10진수 567의 9의 보수는 432, 10의 보수는 433

 

정수 표현 범위

 

2의 보수를 10진수로 변환

양수일 경우 : 원래 계산하던 것처럼 계산

음수일 경우 : 2의 보수를 취한 후, 양수 계산처럼 계산하고 - 부호 붙이기

[2] 부호 확장

; 늘어난 비트 수만큼 부호를 늘려주는 방법

[3] 2진 정수 연산

뺄셈 : A-B ⇒ A+(B의 2의 보수)

1-4번은 잘 된다. 음수면 2의 보수 취하고, 아니면 그냥 놔두고 계산하면 된다.

8비트의 가상 상위 비트가 부호 비트가 된다.

5-6의 경우, 잘못된 출력 결과가 나온다.

오버플로우가 발생했기 때문에!

8비트의 경우 -128~+127까지만 표현이 가능한데, 5번과 6번은 해당 범위를 벗어났다.

그렇기 때문에 부호 확장을 해야 한다.

부호 확장을 하면,

5번은 00000000 10101100이 되고, 6번은 11111111 01010100이 된다.

[4] 10진 정수 표현

팩 10진 형식

; 1바이트에 digit 2개를 8421 코드로 나타내고 최하위 바이트의 zone 부분에 4비트의 부호를 표현

  • 부호는 양수는 C(1100), 음수는 D(1101), 부호가 없는 양수는 F(1111)

cf) 8421 코드 == BCD 코드(가중치를 두어서 표현)

언팩 10진 형식

; 1바이트가 존 부분과 디지트 부분으로 구성

  • 존 부분에는 F(1111)이 들어가고, 디지트 부분은 8421 코드로 표현된 숫자가 들어감
  • 부호는 양수는 C(1100), 음수는 D(1101), 부호가 없는 양수는 F(1111)

cf) 계산은 팩 10진으로 하고, 표현은 언팩 10진으로 함

03 실수 표현

부동 소수점 수 (ex. 1.23456 * 10^2)

  • 부호는 양수와 음수
  • 지수는 2를 의미
  • 가수는 소수 이하 부분
  • 바이어스는 양의 지수와 음의 지수를 표현
    • 계산된 지수 값에 바이어스를 더하는 방식으로 사용하는 방식으로 사용

정규화

; 가수에 저장될 데이터를 2진수로 표현하는 것

04 디지털 코드

[1] BCD 코드

이렇게 표현하는 것

BCD 코드끼리 더했을 때 결과가 9를 초과하여 BCD 코드를 벗어나면 결과에 6(0100)을 더하기

[2] 3초과 코드

; BCD에 3(0011)을 더한 코드

  • 자기 보수의 성질을 가짐
    • 현재 값에서 1의 보수를 취하면 10진수에서 9의 보수에 해당하는 값이 됨(노란 형광펜)
  • 컴퓨터는 0과 1이 고루 들어오길 원해서 3초과 코드를 사용

[3] 그레이 코드

; 아날로그-디지털 변환기나 입출력 장치 코드로 사용(연산에는 부적합)

  • 연속 코드 간에 한 비트만 변경됨

2진 코드를 그레이 코드로 바꾸는 법

ㄱ자 모양이라고 생각하자

그레이 코드를 2진 코드로 바꾸는 법

2 모양이라고 생각하자

[4] 다양한 2진 코드

가중치 코드

; 각 비트의 위치에 따라 값이 정해진 코드

비가중치 코드

; 각 위치에 해당하는 값이 없는 코드

[5] 영숫자 코드

; 숫자와 알파벳 문자들을 표현한 코드

표준 BCD 코드

; 6비트로 한 문자를 표현

  • 상위 2비트는 존 비트, 하위 4비트는 디지트 비트
  • 에러 검사용 검사 비트 젤 좌측에 추가
  • 64가지 문자 표현

ASCII 코드

; ANSI가 제정한 정보 교환용 미국 표준 코드

  • 3비트 존과 4비트 디지트에 1비트 패리티 비트를 추가하여 만든 8비트 코드
  • 128가지 문자 표현

A를 읽는다고 했을 때, A의 코드는 어떻게 될까?

A = 41 = 16*4 + 1*1 = 64 = 0110 0100

 

 

Notion2Tistory

 

boltlessengineer.github.io

[출처]

1. 최신 컴퓨터 구조 - 디지털 논리부터 성능 분석까지,

'공부 > 컴퓨터 구조' 카테고리의 다른 글

[Chap5] 제어 장치  (0) 2021.05.01
[Chap4] 중앙 처리 장치  (0) 2021.05.01
[Chap3] 디지털 논리 회로  (0) 2021.05.01
[Chap2] 데이터의 표현(2)  (0) 2021.05.01
[Chap1] 서론  (0) 2021.05.01