영기반번호 부여

Zero-based numbering

영점 기반 번호 매기기는 일상의 비수학적 또는 비프로그래밍 상황에서 전형적으로 지수 1이 아닌 시퀀스의 초기 요소에 지수 0이 할당되는 번호 매기기 방식이다. 영점 기반 번호 부여에서는 초기 원소를 번째 원소가 [1]아닌 제로스 원소라고 부르기도 한다. 제로스숫자 0에 해당하는 신조어 서수 번호다. 어떤 경우에는 (원래적으로) 주어진 순서에 속하지는 않지만, 그 초기 요소 앞에 자연스럽게 놓일 수 있는 물체나 값을 제로스 원소라고 부를 수 있다. 0을 서수로 사용하는 것의 정확성(zeroth라는 용어의 사용과 관련 없음)에 대해서는 큰 합의가 없다. 왜냐하면 그것은 문맥이 부족할 때 순서의 모든 후속 요소들에 대해 모호성을 야기하기 때문이다.

수학의 프로그래밍 언어는 보통 1부터 색인화되지만, 0부터 시작하는 번호 순서는 수학 표기법, 특히 조합어에서는 꽤 흔하다.[2][3][4] 컴퓨터 과학에서 배열 지수는 대개 현대 프로그래밍 언어에서 0에서 시작되므로 컴퓨터 프로그래머들은 다른 사람들이 먼저 사용할 수 있는 상황에서 제로스를 사용할 수 있다. 일부 수학적인 맥락에서, 서수형 형식이 분명한 우선 순위에 대한 의미를 잘 확립했을 때, 0을 구분하여 얻은 함수 그 자체인 경우, 0을 기초로 한 번호 매기기를 혼동하지 않고 사용할 수 있다. 그러한 용도는 순서에 적절하게 속하지 않고 그 앞에 있는 요소의 명칭을 지정하는 것과 일치한다. 즉, 제로트 파생상품은 실제로 파생상품이 전혀 아니다. 그러나 첫 번째 파생상품이 두 번째 파생상품보다 앞선 것처럼, 제로드 파생상품(또는 원래 기능 자체)도 첫 번째 파생상품보다 앞선다.

컴퓨터 프로그래밍

기원

BCPL 언어(C의 전구체)를 만든 마틴 리차드는 어드레스로 사용되는 포인터 p의 값이 메모리의 p + 0 위치에 접근하기 때문에 0에서 시작하는 배열을 언어의 배열 내용에 접근하기 시작하는 자연적인 위치로 설계했다.[5][6] BCPL은 IBM 7094를 위해 처음 컴파일되었다. 언어는 실행 시간 양방향 조회를 도입하지 않았기 때문에 이들 어레이가 제공하는 양방향 최적화는 컴파일 시간에 수행되었다.[6] 그럼에도 불구하고 최적화는 중요했다.[6][7]

에츠허르 데이 크스트라 후의 사슬 형태로 매어진 불평등에, 4개 가능성을 이해하고 날카로운 불평등이 결합된 그의 판결을 받고 0부터 시작하는 배열을 가장 잘non-overlapping inde로 표시됩니다 그 시위를 하고 있는 그들 수용하면 배열 지수의 가능한 디자인 분석하고 왜 번호 zero[8]으로 1982년 시작해야 한다 적절한 유서를 쓰)r0에서 시작하는 anges는 실제 숫자와 마찬가지로 개방, 반쯤 개방폐쇄된 간격을 암시한다. 이번 전당 대회 선호에 데이 크스트라의 기준 상세하게가 보다 자연적인 방법으로(나는 < ≤;?)보다"간격"(나는 ≤ ≤(a−1)이 닫혀 빈 시퀀스를 나타내는가?), naturals의 반"간격", sub-sequence의 길이에서를 빼면 나를(나는 < ≤, b( 준다 b−a)마련 가능한 값, wi상단에 해당한다.번째, b, 는 모두 정수다.

프로그래밍 언어의 사용

이러한 용도는 C, JavaLisp를 포함한 많은 영향력 있는 프로그래밍 언어에 포함된 설계 선택에서 나타난다. 이 세 가지에서 시퀀스 유형(C 어레이, Java 어레이 및 목록, Lisp 목록 및 벡터)은 0 첨자로 시작하여 인덱싱된다. 특히 배열들이 포인터 산술에 밀접하게 묶여 있는 C에서 이것은 보다 간단한 구현을 가능하게 한다: 첨자는 배열의 시작 위치로부터의 오프셋을 의미하므로 첫 번째 원소의 오프셋은 0이다.

주소와 오프셋에 의한 메모리를 참조하는 것은 거의 모든 컴퓨터 아키텍처의 컴퓨터 하드웨어에 직접적으로 나타나기 때문에, C의 이 설계 세부사항은 일부 인적 요인의 비용으로 컴파일 작업을 더 쉽게 한다. 이런 맥락에서 "제로스"를 서수로 사용하는 것은 엄격히 옳은 것이 아니라, 이 직업에서 널리 퍼진 습관이다. Fortran이나 COBOL과 같은 다른 프로그래밍 언어들은 하나의 것으로 시작하는 배열 첨자를 가지고 있는데, 그 이유는 그것들은 높은 수준의 프로그래밍 언어로 의미되었기 때문이다. 그리고 그들은 오랜 시간 동안 0의 발명을 앞지르는 일반적인 순서 번호에 대응해야 했다.

Pascal은 배열의 범위를 모든 서수형( 열거형 포함)으로 할 수 있도록 한다. APL은 프로그램적으로 런타임 중에 인덱스 원점을 0 또는 1로 설정할 수 있다.[9][10] 루아, 비주얼 베이직과 같은 몇몇 최근 언어들은 같은 이유로 같은 규약을 채택했다.

0은 가장 낮은 부호 없는 정수값으로 프로그래밍과 하드웨어 설계에서 가장 기본적인 유형 중 하나이다. 컴퓨터 공학에서, 0은 많은 종류의 숫자 재귀의 기본 사례로 자주 사용된다. 컴퓨터 과학에서 증명과 다른 종류의 수학 추리는 종종 0으로 시작한다. 이러한 이유로, 컴퓨터 공학에서 숫자 0을 하나보다 숫자 0으로 매기는 것은 드문 일이 아니다.

해커들과 컴퓨터 과학자들은 종종 출판물의 첫 장을 "0장"이라고 부르기를 좋아하는데, 특히 그것이 입문서의 성격이라면 더욱 그러하다. 대표적인 예가 K&R 제1판이었다. 최근 몇 년 동안 이 특성은 많은 순수 수학자들 사이에서도 관찰되어 왔으며, 여기서 많은 구성들은 0부터 번호를 매기도록 정의된다.

배열을 사용하여 주기를 나타낼 경우 modulo 함수로 지수를 구하는 것이 편리하여 0이 될 수 있다.

수치 특성

영점 기반 번호 매기기를 사용하면 범위는 닫힌 간격 [1,n]과 반대로 반쯤 열린 간격 [0,n]으로 표현할 수 있다. 알고리즘에서 자주 발생하는 빈 범위는 [1,0]과 같은 둔탁한 규칙에 의존하지 않고 폐쇄된 간격으로 표현하기 까다롭다. 이러한 특성 때문에 제로 기반 인덱싱은 잠재적으로 오프바이더펜스포스트 오류를 줄일 수 있다.[8] 반면, 반복 계수 n은 미리 계산해 0부터 n-1까지의 계수(포함)의 사용이 덜 직관적이다. 일부 저자는 한 가지 기반 인덱싱이 다른 맥락에서 기업이 인덱싱되는 방식에 더 밀접하게 대응하므로 이를 선호한다.[11]

이 협약의 또 다른 특성은 현대 컴퓨터에서 구현된 모듈식 산술의 사용이다. 일반적으로 modulo 함수정수 modulo N을 0, 1, 2, ..., N - 1의 숫자 중 하나에 매핑한다. 여기서 N 1이다. 이 때문에, 배열 지수가 0에서 시작할 때 modulo 연산을 이용하여 알고리즘의 많은 공식(해시 테이블 지수 계산 등)을 코드로 우아하게 표현할 수 있다.

또한 포인터 연산은 위에서 언급한 기본적인 주소/오프셋 논리로 인해 제로 기반 인덱스에서 더욱 우아하게 표현될 수 있다. 예를 들어, a가 배열의 첫 번째 요소의 메모리 주소이고, i가 원하는 요소의 인덱스라고 가정하십시오. 원하는 요소의 주소를 계산하기 위해 인덱스 번호가 1부터 계산되는 경우 다음 식을 사용하여 원하는 주소를 계산한다.

a + s × (i − 1)

여기서 s는 각 원소의 크기이다. 이와는 대조적으로, 지수 번호가 0부터 카운트되면 식은 다음과 같이 된다.

a + s × i

간단한 표현식은 런타임에 계산하는 것이 더 효율적이다.

그러나 1부터 배열을 색인화하고자 하는 언어는 모든 배열 주소가 a= a s로 표현된다는 관례를 채택할 수 있다. 즉, 첫 번째 배열 요소의 주소를 사용하기 보다는 그러한 언어는 첫 번째 실제 요소 바로 앞에 위치한 가상 요소의 주소를 사용할 것이다. 그러면 1 기반 인덱스에 대한 인덱싱 식이 다음과 같을 것이다.

a′ + s × i

따라서, 제로 기반 인덱싱의 런타임에서의 효율성 편익은 본질적인 것이 아니라 가공의 제로스 요소의 주소가 아닌 첫 번째 요소의 주소로 배열을 나타내려는 결정의 인공물이다. 그러나, 그 가공 요소의 주소는 배열과 관련이 없는 메모리에 있는 다른 항목의 주소가 될 수 있다.

표면적으로는 가상 요소가 다차원 배열로 잘 확장되지 않는다. 0에서 다차원 배열을 인덱싱하면 선형 주소 공간으로 순진한(연속적인) 변환(시스템적으로 한 인덱스를 하나씩 차례로 변경)이 인덱싱할 때보다 단순해 보인다. 예를 들어 리니어 어레이 L[M⋅N⋅P], 둘 다 M⋅N⋅P 원소를 가진 직선 배열 L[r])A[z][y][)]과에는 0부터 시작하는 인덱스에 즉[0≤)<>P],[0≤ y<>N],[0≤ z<>M], -LSB- 0≤ r특정 원소에 접속할 인덱스 r&려고 할 때 삼차원 배열 지도를 만드는 작업을 한[P][N][M]{\displaystyle \mathrm{A}[P][N][M]}.그것은, M⋅N⋅P], is calculated by r = zMN + yM + x. Organizing all arrays with 1-based indices ([1 ≤ x′P], [1 ≤ y′N], [1 ≤ z′M], [1 ≤ r′M⋅N⋅P]), and assuming an analogous arrangement of the elements, gives r′ = (z′ − 1)⋅MN + (y′ − 1)⋅M + (x′ − 0) to access the same element, which arguably looks more complicated. 물론 r' = r + 1 [z = z 1], [y = y 1], [x = x – 1]이기 때문이다. 단순하고 일상적인 삶의 예는 0의 발명이 가능하게 만든 위치 표기법이다. 위치 표기법에서, 수십, 수백, 수천과 다른 모든 자리는 0으로 시작하고, 단위는 1에서 시작한다.[12]

  • 제로 기반 지수
    x
    y
    0 1 2 .. .. 8 9
    0 00 01 02 08 09
    1 10 11 12 18 19
    2 20 21 22 28 29
    ..
    ..
    8 80 81 82 88 89
    9 90 91 92 98 99
    테이블 내용은 인덱스 r을 나타낸다.
  • 단일 기반 지수
    x'
    y'
    1 2 3 .. .. 9 10
    1 01 02 03 09 10
    2 11 12 13 19 20
    3 21 22 23 29 30
    ..
    ..
    9 81 82 83 89 90
    10 91 92 93 99 100
    테이블 내용은 인덱스 r을 나타낸다.

이런 상황은 용어에 약간의 혼란을 초래할 수 있다. 제로 기반 인덱싱 방식에서 첫 번째 요소는 "원소 번호 0"이며, 마찬가지로 12번째 요소는 "원소 번호 11"이다. 따라서 순서형 번호에서 번호가 매겨진 물체의 양에 대한 유사성이 나타난다. n개 물체의 가장 높은 지수는 n - 1이며 n번째 원소를 가리킨다. 이러한 이유로, 혼동을 피하기 위한 시도로 제롯 원소라고 부르기도 한다.

과학

수학에서, 많은 수의 숫자 또는 다항식들은 예를 들어 베르누이 숫자와 벨 숫자와 같은 음이 아닌 정수에 의해 색인화된다.

역학통계학 모두에서 제로스 모멘트는 정의되며, 물리적 밀도의 경우 총 질량 또는 확률 분포의 경우 총 확률 1을 나타낸다.

열역학 제롯 법칙은 제1법칙, 제2법칙, 제3법칙 이후에 공식화되었으나, 보다 근본적인 것으로 간주되어 그 이름이 붙여졌다.

생물학에서 유기체는 "아무것도 의도하지 않는다"는 것을 보여주면 의도성이 영(0)이라고 한다. 여기에는 유기체가 유전자를 표현하기 위해 "교육감"을 하지 않았기 때문에 유전적으로 미리 결정된 표현형태가 자신에게 건강상의 이익을 가져다 주는 상황이 포함될 것이다.[13] 이와 유사하게, 컴퓨터는 자신이 운영하는 프로그램의 코드를 표현하기 위해 "교육"되지 않기 때문에 이러한 관점에서 제로 오더 의도적 실체라고 생각할 수 있다.[14]

생물학적 또는 의학적인 실험에서, 실험 시간이 지나기 전에 행해진 초기 측정은 실험의 0일에 있다고 한다.

게놈학에서는 게놈 좌표에 0 기반 시스템과 1 기반 시스템이 모두 사용된다.

환자 영점(또는 인덱스 케이스)은 역학 조사의 모집단 샘플의 초기 환자다.

기타 필드

0년은 널리 사용되는 그레고리력이나 그 전신인 율리우스력에는 존재하지 않는다. 그러한 시스템 하에서 BC 1년AD 1년이 뒤따른다. 그러나 모든 불교 달력과 힌두 달력뿐만 아니라 천문학적 연도 번호 매기기(기원전 1년)와 ISO 8601:2004년(기원전 1년)에도 0년이 있다.

많은 나라에서, 건물의 1층은 보통 미국에서 발견되는 명명 규칙인 "1층"이 아니라 0층으로 간주된다. 이것은 음수로 표시된 지하층과의 일관된 세트를 만든다.

0의 서수는 대부분 수학, 물리학, 컴퓨터 과학과 직접 연결된 공동체에서 사용된다고 생각하지만, 고전 음악에도 예시가 있다. 작곡가인 안톤 브루크너는 자신의 초기 교향곡 D단조에서 자신의 작품의 캐논에 수록할 가치가 없다고 여겼고, '길트 니콜트'를 크로스바와 함께 스코어와 원에 '잘못된' 것을 의미한다고 생각하고 있었다. 그러나 사후 이 작품은 실제로 C단조 교향곡 1번 이후에 쓰여졌음에도 불구하고 D단조 교향곡 0번으로 알려지게 되었다. Bruckner's의 F단조에는 때때로 No. 00라고 불리는 훨씬 더 이른 교향곡이 있다. 러시아 작곡가 알프레드 슈니트케도 교향곡 0번을 썼다.

옥스퍼드, 캠브리지 등 일부 대학에서는 "0주" 또는 때때로 "notth week"는 한 학기의 강의 첫 주 전 주를 가리킨다. 호주에서는 이를 '오위크(O Week)'라고 부르기도 하는데, 이는 '오리엔테이션 위크(Orientation Week)'에 대한 말장난 역할을 한다. 이와 유사하게 스웨덴의 대학교육 입문주간을 일반적으로 "nolling"(제로잉)이라고 부른다.

미 공군은 매주 수요일에 기본 훈련을 시작하며, 첫 주(8일 중)는 다음 주 일요일부터 시작하는 것으로 간주된다. 그 전 4일은 종종 "제로 위크"라고 불린다.

24시간 시계와 국제 표준 ISO 8601은 0을 사용하여 하루 중 첫 번째(제로스) 시간을 나타낸다.

런던 킹스 크로스 역, 에든버러 헤이마켓, 웁살라 역, 요나고 역, 스톡포트 역, 카디프 역에는 플랫폼 0이 있다.

로버트 크럼브잽코믹스 1호 발행을 위해 그린 도면을 도난당해 완전히 새로운 이슈를 그렸고, 이후 그는 도난당한 미술품의 복사본을 다시 끼워 발행해 0호로 발행했다.

벨기에의 브뤼셀 순환도로에는 R0 번호가 매겨져 있다. 앤트워프 주변의 순환도로를 따라 건설되었지만 브뤼셀(수도)은 보다 기본적인 번호를 받을 만하다고 여겨졌다. 비슷하게 헝가리 부다페스트 주변의 궤도 고속도로는 M0이라고 불린다.

제로(Zero)는 때때로 거리 주소, 특히 짝수(짝수)가 거리의 한 쪽이고 홀수(홀수)가 다른 쪽인 계획에서 사용된다. 대표적인 예가 하버드 스퀘어크라이스트 처치인데, 주소는 가든 스트리트 0이다.

포뮬러 원에서는 디펜딩 세계 챔피언이 다음 시즌에 출전하지 않을 때 1번 드라이버는 아무 드라이버에도 배정되지 않지만, 세계 챔피언 팀의 1번 드라이버는 0번, 다른 1번 드라이버는 2번을 달고 간다. 1993년과 1994년 데이먼 힐이 두 시즌 모두 0번을 달고 있는 가운데 1992년 이후 디펜딩 챔피언 나이젤 맨셀이, 1993년 이후 디펜딩 챔피언 알랭 프로스트가 그만두면서 이런 일이 벌어졌다.

시리즈의 시간별 사전 편차는 링 0: 생일 또는 Zork Zero와 같이 0으로 번호를 매길 수 있다.

스위스연방철도는 0부터 118까지 특정 등급의 회전식 주식에 번호를 매긴다.

소설의 영역에서, 아이작 아시모프는 결국 그의 로봇공학의 세 가지 법칙에 제롯 법칙을 추가했고, 본질적으로 네 가지 법칙을 만들었다.

참고 항목

참조

  1. ^ M. Seed, Graham (1965). An Introduction to Object-Oriented Programming in C++ with Applications in Computer Graphics (2nd ed.). British Library: Springer. p. 391. ISBN 1852334509. Retrieved 11 February 2020.
  2. ^ Steve Eddins and Loren Shure. "Matrix Indexing in MATLAB". Retrieved 23 February 2021.
  3. ^ "How to : Get Elements of Lists". Wolfram. Retrieved 23 February 2021.
  4. ^ "Indexing Arrays, Matrices, and Vectors". Maplesoft. Retrieved 23 February 2021.
  5. ^ Martin Richards (1967). The BCPL Reference Manual (PDF). Massachusetts Institute of Technology. p. 11.
  6. ^ a b c Mike Hoye. "Citation Needed". Retrieved 28 January 2014.
  7. ^ Tom Van Vleck (1995). "The IBM 7094 and CTSS". Retrieved 28 January 2014.
  8. ^ a b Dijkstra, Edsger Wybe (May 2, 2008). "Why numbering should start at zero (EWD 831)". E. W. Dijkstra Archive. University of Texas at Austin. Retrieved 2011-03-16.
  9. ^ Brown, Jim (December 1978). "In Defense of Index Origin 0". ACM SIGAPL APL Quote Quad. 9 (2): 7. doi:10.1145/586050.586053. S2CID 40187000.
  10. ^ Hui, Roger. "Is Index Origin 0 a Hindrance?". jsoftware.com. JSoftware. Retrieved 19 January 2015.
  11. ^ Donis Marshall이 Microsoft® Visual C#® 2005 프로그래밍
  12. ^ Sal Khan. Math 1st Grade / Place Value / Number grid. Khan Academy. Retrieved July 28, 2018. Youtube title: Number grid / Counting / Early Math / Khan Academy
  13. ^ Byrne, Richard W. "The Thinking Ape: Evolutionary Origins of Intelligence". Retrieved 2010-05-18.
  14. ^ Dunbar, Robin. "The Human Story - A new history of mankind's Evolution". Retrieved 2010-05-18.