분명 손가락 1개, 2개 , 3개.. 이렇게 1번부터 시작이 자연스러운데
이제 갓 IT에 발을 들이기 시작한 프린이로한테 배열의 넘버링의 시작이 0번이라니!!
도통 이해할 수 없었습니다..
그래서 구글링을 통해 딱 이유를 두 가지로 간추려봤어요.
쉽게 설명했으니 꼭 따라오세요!!
첫 번째,
현대 프로그래밍 언어에 뿌리를 내렸다고 할 수 있는 c언어를 살펴볼게요.
[어셈블리어 -> ...-> bcpl언어 -> b언어 -> c언어 ]
c언어도 개발된지 오래되었지만, c언어는 더 오래된 bcpl과 b언어를 기반으로 두고 있다고 합니다.
(b언어는 bcpl언어에서 문법만 바꾼 정도입니다.)
이 두 언어(bcpl,b)는 애초에 첫 인덱스의 넘버링을 0번부터로 개발이 되었다고 합니다
그래서 c언어도 마찬가지로, 배열 인덱스 넘버링의 첫 시작이 0번입니다!
두 번째,
여러분 수학개념에서 닫힌구간 [ ] 과 열린구간 ( ) 의 개념 기억하시나요?
사진에서 보듯이 4가지의 구간 개념이 존재합니다.
[a,b] , [a,b) , (a,b) , (a,b]
이 개념을 숙지하고 예시를 보겠습니다.
문제 . 1부터 10까지 정수의 갯수는 몇개일까요?
답. 네, 당연히 10개입니다.
이 문제를 위의 개념을 이용해서 표현해본다면
[1,10] 표현을 할 수 있습니다.
근데 이 문제를 계산할 때 10 - 1 해서 단순히 되는게 아니라 +1 을 따로해서 10 - 1 + 1 = 10 이란 결과에 이르게 됩니다.
깔끔하지가 않죠?
그러면 첫번째 또는 마지막 수를 포함하지 않는 반닫힘 구간 (1,10] or [1,10) 정수의 갯수를 구해본다면 10 - 1 = 10개로 떨어집니다.
방금 느끼셨듯이
구간을 표현할 때 가장 이상적인 구간은 반닫힘 구간입니다.
이걸 개발자분들도 아신거죠!
그래서 배열의 시작은 0번 부터입니다.
참고로 이 분의 포스팅에서 도움을 받았습니다.
오늘도 감사합니다^^
즐거운 하루 되세요~
'IT > 공부자료' 카테고리의 다른 글
[데이터분석] Mean, Median, Mode, Outlier 의미 (0) | 2021.09.28 |
---|---|
[하버드 CS50강의] 더 좋은 프로그래밍을 보는 관점 / Arrays[배열] - 티스토리 (0) | 2021.07.04 |
[이번엔 까먹지 말자] int와 long 구분하기 / bit와 Byte에 대해 (0) | 2021.07.02 |
[DataBase] ERD 지금 짚고 넘어가자. (0) | 2021.05.28 |
알고리즘(argorithm)이란? - 알고하는 알고리즘 (2) | 2021.01.31 |