인덱스로 주소 계산하기
한 칸이 8바이트인 배열의 첫 칸 주소가 3000이다. 주소는 addr(i) = base + i × size로 계산한다.
- 인덱스 7인 칸의 주소를 구한다.
- 주소가 3096인 칸의 인덱스를 구하고, 이 칸이 1부터 세면 몇 번째 칸인지 적는다.
- 원소가 1,000개일 때와 1,000,000개일 때 인덱스로 주소를 구하는 계산량이 달라지는지 적는다.
- Python list에 정수, 문자열, 목록을 섞어 담아도 이 주소 계산이 성립하는 이유를 적는다.
해설 펼치기
- 3000 + 7 × 8 = 3056이다.
- (3096 − 3000)/8 = 12이므로 인덱스 12이고, 1부터 세면 13번째 칸이다. 인덱스는 첫 칸에서 떨어진 칸 수다.
- 달라지지 않는다. 원소 수와 관계없이 곱셈 한 번과 덧셈 한 번으로 주소를 구한다.
- Python list의 칸에는 객체 자체가 아니라 같은 크기의 참조가 들어간다. 칸의 크기가 같으므로 주소 계산이 성립한다.