[WEEK 05] 컴퓨터 시스템 - 2. 정보의 표현과 처리

신호정 벨로그·2021년 9월 9일
0

Today I Learned

목록 보기
24/89

2. 정보의 표현과 처리

2.1 정보의 저장

메모리에 저장된 각각의 비트들을 접근하는 방식 대신에 대부분의 컴퓨터들은 메모리에서 주소지정이 가능한 최소단위인 8비트 단위의 블록인 8바이트를 사용한다.

기계수준의 프로그램은 메모리를 가상메모리라고 하는 거대한 바이트의 배열로 취급한다.

메모리의 각 바이트는 주소라고 하는 고유한 숫자로 식별할 수 있으며, 모든 가능한 주소들의 집합을 가상 주소공간이라고 부른다.

C에서 어떤 포인터의 값은 정수, 구조체, 다른 프로그램 객체 등 유형에 관계없이 저장장치의 동일한 블록의 첫 바이트의 가상주소가 된다.

C 컴파일러는 각 포인터와 타입 정보를 연관시켜서 포인터가 지시하는 위치에 저장된 값에 접근하기 위해 그 값의 타입에 따라 다른 기계수준 코드를 생성할 수 있다.

포인터는 배열과 같은 자료 구조의 원소를 참조하는 방법을 제공한다. 포인터는 변수처럼 값과 유형이라는 두 개의 측면을 가지고 있다. 객체의 위치를 가리키는 반면, 유형어떤 객체가 그 위치에 저장되어 있는가를 나타낸다.

2.1.3 주소지정과 바이트 순서

sizeof(T)타입 T의 객체를 저장하기 위해 필요한 바이트 수를 리턴해준다.

typedef를 사용해서 데이터 타입을 새로 만들기

C에서 typedef 선언을 사용하면 데이터 타입에 이름을 붙일 수 있다. typedef문의 규칙은 변수 이름 대신에 타입 이름을 사용하는 것을 빼고는 변수를 선언하는 것과 완전히 동일하다.

포인터와 배열

C에서는 배열 표시를 사용해서 포인터를 역참조(dereferencing)할 수 있으며, 배열의 원소는 포인터 표시로 참조할 수 있다.

포인터의 생성과 역참조

캐스트 연산자하나의 데이터 타입을 다른 타입으로 변환해준다. 캐스트 연산자는 이전에 가진 포인터 타입에 관계없이 프로그램이 타입의 데이터 포인터를 참조하게 될 것임을 의미한다. 캐스트는 실제 포인터를 바꾸는 것이 아니라 단순히 컴파일러가 새로운 데이터 타입에 따라 데이터를 참조하도록 지시하는 역할을 한다.

2.5 요약

컴퓨터는 정보를 비트로 인코딩하며, 이들은 일반적으로 연속된 바이트들로 구성된다.

여러 가지 컴퓨터들은 숫자를 인코딩하고 다중바이트 데이터 내의 바이트 순서를 정하는 데 서로 다른 모델을 사용한다.

0개의 댓글