[CS공부] 데이터

백엔드 취준생·2025년 8월 10일

CS공부

목록 보기
7/14

컴퓨터의 정보 단위

정보 단위

  • 비트(Bit)
    • 가장 작은 정보 단위
    • 0과 1로 이루어짐
  • 바이트(Byte)
    • 8개의 비트를 묶은 단위
  • 킬로 바이트(Kilo Byte)
    • 1000 바이트
  • 메가 바이트(Mega Byte)
    • 1000 킬로 바이트
  • 기가 바이트(Giga Byte)
    • 1000 메가 바이트
  • 테라 바이트(Tera Byte)
    • 1000 기가 바이트

1kB는 1,024Byte 로 표현하는 것은 잘못된 관습입니다. 1024로 묶으려면 kB가 아닌 kiB로 표현해야 합니다.

비트 표현법

이진법

  • 수학에서 0과 1만으로 모든 숫자를 표현하는 방식
  • 이진법을 표현한 수를 이진수라고 한다.
  • 2의 보수를 통해 음수를 구할 수 있습니다.
    • 어떤 수를 그보다 큰 2^n에서 뺀 값
    • EX) 1011 -> 0101(1011의 음수 값)

플래그

부가 정보를 통해 어떤 수를 음수인지 양수인지 비교하기 위해 사용됩니다.

2의 보수 표현의 한계
0이나 2^n 형태의 이진수에 2의 보수를 취하면 음수 값을 얻을 수 없습니다.
0000 -> 1111 + 1 -> 10000 -> 올림이 발생한 비트의 1을 버리게 된다.

추가적으로 16진수를 코드에 직접 넣은 사례도 있다.
offset = __mem_to_opcode_arm(*(u32 &)loc);
offset = (offset & 0x00ffffff) << 2;
if (offset & 0x02000000)
offset -= 0x04000000;
offset += sym->st_value - loc

문자 표현법

문자 집합

컴퓨터가 인식하고 표현할 수 있는 문자의 모음

문자 인코딩

문자를 0과 1로 변환하여 컴퓨터가 이해할 수 있도록 한 과정

문자 디코딩

0과 1로 된 문자 코드를 사람이 이해할 수 있도록 문자로 변환하는 과정

아스키 코드

초창기 문자 집합입니다. 영어 알파벳과 아라비아 숫자, 일부 특수 문자를 포함하는

1. 제어 문자 (Control Characters)

문자 이름아스키 코드(10진수)설명
NUL (Null)0문자열 끝 표시나 초기화 등
SOH (Start of Heading)1헤더 시작, 거의 안 쓰임
LF (Line Feed, \n)10줄 바꿈 (Unix, Linux, macOS)
CR (Carriage Return, \r)13캐리지 리턴 (Windows 줄바꿈은 CR+LF)
TAB (Horizontal Tab)9탭 문자
ESC (Escape)27이스케이프 문자
DEL (Delete)127삭제 문자

특히 LF(10), CR(13), TAB(9) 은 텍스트 데이터 처리할 때 많이 사용됩니다.

2. 숫자와 영문자 (Printable Characters)

범위코드 범위 (10진수)의미
숫자 '0'~'9'48 ~ 57숫자 문자
대문자 'A'~'Z'65 ~ 90영문 대문자
소문자 'a'~'z'97 ~ 122영문 소문자

문자 → 숫자 변환 시 이 값으로 산술 연산 가능합니다. (예: '0' = 48 → char - 48 하면 숫자 값 나옴)

3. 특수문자 중 유용한 것들

문자아스키 코드(10진수)설명
Space (공백)32공백 문자
!33느낌표
"34큰따옴표
#35
$36달러
%37퍼센트
&38앰퍼샌드
'39작은따옴표
(40소괄호 시작
)41소괄호 종료
*42별표
+43더하기
,44쉼표
-45빼기/하이픈
.46마침표
/47슬래시
:58콜론
;59세미콜론
<60부등호 작음
=61등호
>62부등호 큼
?63물음표
@64골뱅이(@)

유니코드와 UTF-8

EUC-KR 인코딩 덕분에 한국어를 코드로 표현할 수 있게 되었습니다.

EUC-KR이란?
KS X 1001, KS X 1003이라는 문자 집합을 기반으로 하는 대표적인 완성형 인코딩 방식
초성, 중성, 종성이 모두 결합된 한글 단어에 2바이트 크기의 코드를 부여합니다.

유니코드는 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지도 코드로 표현할 수 있는 통일된 문자 집합입니다.
인코딩 방식 -> UTF-8, UTF-16, UTF-32 등이 있습니다.

UTF-8

1바이트부터 4바이트까지의 인코딩 결과를 만들어 낼 수 있습니다. -> 유니코드 문자에 부여된 값의 범위에 따라 결정됩니다.

예시

한글 -> D55C(16진수) + AE00(16진수) -> 이진수 변환 시 1101 0101 0101 1100(2진수) + 1010 1110 0000 0000(2진수)
처럼 인코딩해줍니다.

자료 출처

혼자공부하는 컴퓨터구조 + 운영체제

profile
코딩하는 대학생

0개의 댓글