왜 컴퓨터는 0에서부터 셀 수 있습니까?
0부터 세는 것은 많은 컴퓨터 언어에서 매우 일반적인 방법이지만 그 이유는 무엇입니까? 우리가 현상을 탐구하고 왜 그렇게 널리 퍼져 있는지 읽어보십시오..
오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 중심 그룹 인 Stack Exchange의 하위 부문 인 수퍼 유저의 도움으로 이루어졌습니다..
질문
수퍼 유저 DragonLord는 왜 대부분의 운영 체제와 프로그래밍 언어가 0에서 시작하는지 궁금합니다. 그는 쓴 :
컴퓨터는 전통적으로 0부터 시작하는 숫자 값을 계산합니다. 예를 들어, C 기반 프로그래밍 언어의 배열은 인덱스 0부터 시작합니다..
이 역사적 이유는 무엇이며, 어떤 실용적인 이점은 0에서 세어도 1에서 세어도?
왜 실제로? 연습만큼이나 널리 퍼져 있으므로 확실하게 구현을위한 실질적인 이유가 있습니다..
대답
수퍼 유저 기고가 인 Matteo는 다음과 같은 통찰력을 제공합니다.
0에서 배열을 계산하면 각 요소의 메모리 주소를 간단하게 계산할 수 있습니다..
배열이 메모리의 주어진 위치에 저장되면 (주소라고 함) 각 요소의 위치는 다음과 같이 계산 될 수 있습니다.
요소 (n) = 주소 + n * size_of_the_element
첫 번째 요소를 첫 번째 요소로 간주하면 계산은 다음과 같이됩니다.
요소 (n) = 주소 + (n-1) * size_of_the_element
엄청난 차이는 아니지만 각 액세스에 대해 불필요한 빼기를 추가합니다..
추가 편집 :
- 오프셋으로 배열 인덱스를 사용하는 것은 필수 사항이 아니라 습관 일뿐입니다. 첫 번째 요소의 오프셋은 시스템에 의해 숨겨 질 수 있으며 요소를 할당하고 참조 할 때 고려됩니다.
- Dijkstra는 "0부터 시작해야하는 이유는 무엇입니까"라는 논문 (pdf)을 발행하여 왜 0으로 시작하는 것이 더 나은 선택인지 설명합니다. 0부터 시작하면 범위를보다 잘 표현할 수 있습니다..
대답을 깊이 파고 드시려면 Dijkstra 논문을 읽어보십시오..
설명에 추가 할 것이 있습니까? 의견에서 소리가 나지. 다른 기술에 정통한 Stack Exchange 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..