2023. 2. 18. 18:50ㆍ알고리즘
메모리에는 크게 하드디스크와 ram메로리가 있다. 코딩을하고 저장하면 하드디스크에 올라가고 실행하면 ram메모리에 올라간다. 비효율적으로 코딩하면 ram 메모리 공간이 낭비되고 성능을 저하시킨다.
Ram메모리는 트랜지스터라는 작은 반도체 소자로 이루어져 있다.
트랜지스터에 불이 들어오면 1 안들어오면 0 으로 트랜지스 하나당 2가지의 숫자를 나타낼 수 있다.
이것을 1bit라고 한다.
2bit는 트랜지스터가 두개니 4개의 숫자, 8bit는 255의 숫자를 나타낼 수 있다. 8bit가 1byte이다.
이와같이 컴퓨터는 이진법의 숫자를 통해 인식한다.
217을 이진법으로 나타내면 11011001 이다
217을 16진법으로 타나내면 위의 이진법을 4개씩 나누어서(1101, 1001) 나타낼 수 있다.
1101은 13이고 1001은 9다.
13은 16진법에서 D로 나타낼 수 있으니 217이 16진법으로는 D9가 되는거다. 이진법으로 나타낸 수를 16진법으로 나타내니 훨씬 자리수가 줄어들었다. 따라서 많은 수를 이진법으로 나타내면 자리수가 엄청 많아지기에 16진법으로 나타낸다.
RAM은 보통 8GB정도 된다.
그보다 작은 1MB를 한번보자. 1BYTE가 1024개 모이면 1KB가 된다. 1KB가 1024개 모이면 1MB가 된다. 1MB만 하더라도
엄청 넓은 메모리 공간인데 8GB는 더욱더 넓다. 이 넓은 메모리 공간에서 데이터를 찾으려면 지표가 있어야 하는데 하나하나에 주소값을 달아났다. 이때 주소를 16진법으로 나타낸다.
자료형중에 int는 4byte를 메모리에서 차지한다. char같은 문자는 컴퓨터가 숫자만 인식하기에 모른다. 그래서 ASCIIcode를 이용해서 문자 하나랑 수자를 1대1로 매칭을 했다. 예를들어 A를 메모리에 저장하면 숫자 65를 저장한다.
Array는 데이터를 ram 메모리에 연속적으로 할당한다.
int array[4] = {1, 2, 3, 4}
int 숫자 4개를 메모리에 할당하면 4byte씩 4개를 연속적으로 메모리에 할당한다.
Linked List는 Array와 다르게 메모리상에 불연속적으로 데이터를 저장한다.
3, 1, 5, 9라는 숫자를 저장한다면
4byte씩 메모리에 불연속적으로 저장되고 각 메모리에는 다음 숫자의 할당된 주소도 같이 저장해 숫자의 순서를 알 수 있다. 이렇게 데이터와 다음데이터의 주소를 같이 저장한것을 node 라고 부른다.
'알고리즘' 카테고리의 다른 글
Linked List (0) | 2023.02.19 |
---|---|
Sort & Two Pointer (0) | 2023.02.19 |
리스트(List) (0) | 2023.02.19 |
시간복잡도 (0) | 2023.02.18 |
자료구조 (0) | 2023.02.18 |