CPU는 0과 1만 이해할 수 있음

비트는 0과 1을 나타내는 가장 작은 단위

워드는 CPU가 한 번에 처리할 수 있는 데이터의 크기, 보통 32/64 bit

 

부동 소수점

float a = 0.1;
float b = 0.2;
float c = 0.3;

c == a + b가 false가 될 수 있는 이유는 부동 소수점 표현 방식으로 오차 발생

  • C++17에서는 true가 되지만 높은 정밀도에서는 차이가 있음

 

부동소수점은 소수점이 고정되지 않은 소수점 표현 방식

123.123을 1.23123 x 10^2, 1231.23 x 10^(-1)로 다양하게 표현할 수 있음

제곱으로 표현된 2를 지수, 123.123, 1231.23, 1.23123을 가수라고 함

가수의 정수부를 1로 통일된 정규화한 수(예, 1.23123 x 10^2)가 저장되므로 가수에는 1을 제외한 소수 부분만 저장됨

 

지수를 부호 없는 정수로 저장하기 위해 음수 값을 양수 값으로 변환하기 위해 바이어스 값(2^(k-1)-1, k는 지수의 비트 수)을 더하여 저장

 

10진수 소수를 2진수로 표현할 때 오차 발생 가능

  • 0.1은 2진수로 표현하면 무한 소수이므로 모든 수를 저장할 수 없어 일부 생략하기 때문

IEEE 754 : 부동 소수점 저장 방식

인코딩 방식

아스키 코드

아스키 문자에 대응되는 고유한 수

영어 알파벳, 아라비아 숫자, 일부 특수문자 포함

1바이트 중 1비트는 패리티 비트로 오류 검출에 사용

 

EUC-KR

한글 인코딩 가능, 아스키 문자를 표현할 때 1바이트, 하나의 한글 글자를 표현할 때 2바이트(16진수)

일부 한글 글자(쀓)를 표현할 수 없음

 

유니코드

한글, 외국어, 특수문자, 화살표, 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합

EUC-KR로 일부 한글 조합을 표현할 수 없는 문제 해결

다른 언어별로 인코딩 방식을 준비할 필요가 없어짐

인코딩 방식에 UTF-8, UTF-16, UTF-32 등이 있고, 가변 길이 인코딩 방식

인코딩 방식에 따라 하나의 글자가 다른 인코딩 결과를 발생

 

base64

문자 뿐만 아니라 이진 데이터까지 변환 가능

 

명령어

수행할 대상(operand) : 데이터 / 데이터가 저장된 위치

수행할 동작(연산 코드) : 데이터 전송(STORE 등), 산술/논리 연산(ADD 등), 제어 흐름 변경(JUMP 등), 입출력 제어(READ 등)

 

하나의 명령어는 연산 코드와 0개 이상의 operand로 구성

 

연산 코드가 담기는 영역은 코드 필드, operand가 담기는 영역은 operand 필드

데이터보다는 데이터가 저장된 위치(메모리 주소나 레지스터 이름)이 명시되기도 하므로 operand 필드를 주소 필드로 부르기도 함

operand에 메모리 주소가 명시되면 메모리 접근이 필요

 

기계어 : CPU가 이해할 수 있도록 0과 1로 표현된 정보를 있는 그대로 표현한 언어

어셈블리어 : 기계어를 읽기 편한 형태로 단순 번역한 언어

 

명령어 사이클

CPU가 명령어를 처리하는 과정에서 반복적으로 실행되는 주기

인출 사이클 : 메모리에 있는 명령어를 CPU로 가져오는 단계

실행 사이클 : CPU로 가져온 명령어를 실행하는 단계

간접 사이클 : operand 필드가 메모리 주소일 경우 메모리에 접근하는 단계

인터럽트 사이클 : 인터럽트를 처리하는 사이클

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

컴퓨터 구조 중요 항목  (1) 2024.09.11
컴퓨터구조 보조기억장치, 입출력장치, GPU  (0) 2024.09.11
컴퓨터구조 메모리  (0) 2024.09.10
컴퓨터구조 CPU  (0) 2024.09.09

+ Recent posts

목차