정보 단위
1. 비트(bit)
컴퓨터가 이해하는 가장 작은 정보 단위이다. 0또는 1의 값을 나타내며 n비트로 2ⁿ가지의 정보 표현 가능하다.
프로그램, 데이터 및 파일은 이진 비트의 조합으로 구성된다.
2. 바이트(Byte)
8비트로 이루어진 정보 단위이다. 컴퓨터 시스템에서 문자, 숫자, 이미지, 음악 및 기타 데이터를 저장하고 전송하는데 사용된다.
3. 워드(word)
워드는 CPU가 한 번에 처리할 수 있는 데이터 크기를 의미한다. CPU의 워드 크기는 해당 CPU가 한 번에 처리할 수 있는 비트 수를 나타낸다. 예를 들어, 만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고, 32비트를 처리할 수 있다면 1워드는 32비트가 된다.
워드 크기는 CPU마다 다르지만, 현대 컴퓨터의 워드 크기는 대부분 32비트 또는 64비트이다. 인텔의 x86 CPU는 32비트 워드 CPU, x64 CPU는 64비트 워드 CPU이다.
01 하프 워드(HalfWord)
Word의 절반 크기를 나타낸다. 예를 들어 32비트 워드 시스템에서 하드 워드는 16비트이다.
02 더블 워드(Doubleword)
워드 크기의 두 배인 데이터크기를 나타낸다. 예를 들어 32비트 워드 시스템에서 더블 워드는 64비트이다.
03 풀 워드(FullWord)
워드 크기를 나타낸다. CPU가 한 번에 처리할 수 있는 데이터를 풀 워드라고 한다.
만약 게임이 32비트에서 64비트가 된다면 어게 달라질까요?
01 메모리 접근 및 용량
32비트 게임은 32비트 주소 공간을 사용하며, 이는 주소 지정이 32비트(2³²)로 제한된다. 이에 게임은 약 4GB의 주소 공간에만 접근할 수 있으며, 이 제한을 넘어서는 데이터를 처리하거나 메모리에 저장하기 어렵다. 따라서 큰 텍스처, 음악 파일 또는 맵 데이터를 처리하는데 제약이 생긴다.
하지만 64비트 게임은 64비트 주소 공간을 사용하며, 이는 주소 지정이 64비트(2⁶⁴)를 사용할 수 있다. 따라서 메모리 용량이 증가되며 게임은 매우 큰 데이터 세트를 효과적으로 다룰 수 있게된다. 이는 게임의 용량, 그래픽 세부 사항, 로딩 시간 등에 좋은 영향을 끼친다.
02 성능 향상
64비트 시스템은 레지스터 크기가 크고 데이터를 한 번에 더 많이 처리할 수 있으므로 메모리 접근 및 데이터 처리 속도가 향상된다. 더 큰 레지스터와 메모리 주소 공간은 게임의 그래픽 처리, 물리 엔진, 인공 지능 및 다른 계산 집약적인 작업에서 성능 향상을 제공한다. 이는 게임의 프레임 속도 및 그래픽 성능에 좋은 영향을 끼친다.
03 안전성 및 보안
64비트 시스템이 되면 메모리 오버플로우 및 다른 보안 취약점으로 인한 공격에 대한 방어 기능이 향상되며 게임의 안정성이 향상된다.또한 메모리 누수를 줄일 수 있어서 게임이 더 안정적으로 플레이 할 수 있다.
04 데이터 처리 및 다중 스레딩
64비트 시스템은 더 큰 데이터 블록을 한 번에 처리할 수 있으며, 이는 게임 엔진이 대규모 데이터를 더 효율적으로 처리할 수 있다 더 큰 메모리 주소 공간을 활용하여 멀티스레딩 및 병렬 처리가 향상된다. 게임은 다중 스레드를 사용하여 복잡한 작업을 동시에 처리할 수 있으며, 이로 인해 게임의 프레임 속도와 반응성이 향상될 수 있다.
3. 이진법(binary)
01 0과 1로 수를 표현하는 방법
숫자가 1을 넘어가는 시점에 자리 올린다.
02 이진법 표기
수학적 표기법 : 이진수 끝에 아랫 첨자로₍₂₎를 붙이는 방식이다.
코드상 표기법 : 이진수 앞에 "0b"를 붙이는 방식입니다. 이다.
03 이진수의 음수 표현
모든 0과1을 뒤집고, 거기에 1을 더한 값으로 구하면된다.
04 음수 표현 문제
0000을 2의 보수를 구하면 10000이 된다. 이 같은 경우 자리 올림이 발생한 비트의 1을 버린다.
1000인 경우 2의 보수를 취하면 자기자신이 되어 버리는 문제는 본질적으로 해결하기 어렵다.
즉 n번 비트로는 -2ⁿ과 2ⁿ라는 수를 동시에 표현할 수 없다. n비트로 나타낼 수 있는 값의 범위는 -2ⁿ부터 2ⁿ-1까지이다.
이진수만 봐서는 이게 음수인지 양수인지 구분하기 어렵다. 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지 구분하기 위해 플래그(flag)를 사용한다. 플래그는 쉽게 말해 부가 정보이다. 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용한다.
4. 십육진법(hexadecimal)
01 십육진법 0과 1로 표현하기
이진법으로는 수자의 길이가 너무 길어진다 ex) 십진수 32 == 이진수 10000
그래서 컴퓨터의 데이터를 표현할 때 십육진법도 많이 사용한다. 수가 15를 넘어가는 시점에 자리올림이 있다.
02 십육진법 표기
십육진법 끝에₍₁₆₎을 붙이거나 십육진법 앞에 0x를 붙인다. 전자는 주로 십육진수 수학적인 표기 방식이고 후자가 코드상 표기방식이다.
직접 코드에 써 넣은 사례도 많다.
int value1 = 0x1A; // 16진수 1A는 10진수로 26
int value2 = 0xFF; // 16진수 FF는 10진수로 255
03 16진수를 사용하는 이유
2진수와 16진수 간의 변환이 쉽기 때문이다.
16진수를 2진수로 변환하기
이진수를 16진수로 변환하기
참고 : 본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다.
'책 > 혼공 컴퓨터구조+운영체제' 카테고리의 다른 글
컴퓨터 구조 - C언어 컴파일 과정(전처리, 컴파일, 어셈블러,링커) +) 목적파일, 실행파일 (0) | 2023.11.12 |
---|---|
컴퓨터 구조 - 명령어의 구조(연산코드, 오퍼랜드),명령어 주소 지정 방식 종류 (0) | 2023.11.09 |
컴퓨터 구조 - 고급언어(컴파일언어,인터프리터언어)와 저급언어(기계어, 어셈블리어) (0) | 2023.11.02 |
컴퓨터구조 - 컴퓨터구조의 큰 그림(CPU, 메모리,보조기억장치,입출력장치) (0) | 2023.10.18 |
컴퓨터구조 - 컴퓨터 구조를 배워야 하는 이유 (0) | 2023.10.18 |
댓글