0

정수 (0~99)
0123456789
10111213141516171819
20212223242526272829
30313233343536373839
40414243444546474849
50515253545556575859
60616263646566676869
70717273747576777879
80818283848586878889
90919293949596979899
음의 정수0~99100~199
나무위키수학상수
01iπe√2√3√5φγB2, B4Gδ, α
아라비아 숫자 표기0
로마 숫자 표기없음
한국어영(零), 공(空), 제로(zero), 빵(속어)
영어zero, oh, null, nil[1], nought
일본어れい(零), ゼロ[2], お[3], まる[4]
중국어líng(零, 속자: 〇[5])
프랑스어Zéro
스페인어Cero
독일어Null (눌)
러시아어Ноль(놀) ,Нуль(눌)[6]
아랍어(صفر(٠
터키어sıfır
그리스어μηδέν
에스페란토Nulo(눌로)

1 개요

-1보다 크고 1보다 작은 정수. 없음(無)을 나타내는 인도에서 이 숫자의 개념을 발견/발명하였다고 하며, 정수 중 양수도 아니고 음수도 아닌 유일한 수다.

2 수학적 의미

수로서의 0은 사칙연산에 대한 여러 가지 특수성을 지니고 있다.

  • 덧셈: 0에 어떤 수를 더하거나 어떤 수에 0을 더하면 어떤 수 자신이 나온다. (덧셈의 항등원)
  • 뺄셈: 0에서 어떤 수를 빼면 부호가 바뀌어서 나오고 어떤 수에서 0을 빼면 어떤 수 자신이 나온다.
  • 곱셈: 어떤 수에 0을 곱하면 무조건 0이 되어 버린다.[7] 또한 곱해서 0이 나오면 곱한 수 중 하나 이상은 0이다.
  • 나눗셈: 나눗셈의 수학적 정의는 '역수를 곱하는 것'이다. 여기서 역수는 곱셈에 대한 역원, 즉 어떤 수와 곱해서 1이 되는 수로 정의한다. 0과 곱해서 1이 되는 수는 없으므로, 0으로 나누기는 생각하지 않는다.

곱셈에서 말한 '곱해서 0이 나오면 곱한 수 중 하나 이상은 0이다'라는 성질은, 얼핏 생각하면 단순해 보이지만 매우 중요한 성질이다. 만약 이 성질이 없다면 방정식을 푸는 것이 불가능한데, (x-a)(x-b)...(x-c) = 0 등으로 아무리 깔끔하게 인수분해를 했어도 각각의 인수가 0이라는 보장이 없기 때문. 실제로 가 아니라 행렬에서의 방정식을 생각한다면, 이 성질이 성립하지 않기 때문에 이렇게 방정식을 풀 수 없다.

나눗셈에 대해 다른 방식으로 생각해보면, 나눗셈 x = b÷a는 일차방정식 ax = b를 푸는 것이라 생각할 수 있다. 여기서 만약 제수 a가 0이라면,

  • b≠0이라면 0×x=b≠0이 되는데 이건 불가능하다. 따라서 x를 만족하는 값, 즉 b/0의 값은 없다.(불능)
  • b=0이라면, 0×x=0은 어떤 x에 대해서도 성립한다. 따라서 x를 만족하는 값, 즉 0/0의 값은 무엇이 되어도 되며, 즉 정할 수가 없다.(부정)[8]

그렇기 때문에 0으로 나누는 것은 정의되지 않는다.
여담으로 0을 제외한 모든 수의 0제곱은 1[9]이다.따라서 0은 지수연산에 관한 역원이다.
마찬가지로 로그의 진수는 밑과 상관없이 0을 받을 수 없다. 이원수의 멱영원을 제외하면 거듭제곱해서 0이 될 수 없기 때문.

0의 또다른 특수성은 '0번째' 혹은 '0개'의 논의에서 온다. 0개의 수를 더하면 0이지만, 0개의 수를 곱하면 1이다! 따라서 0! = 1이라고 말할 수 있다. 비슷하게 경우의 수, 특히 순열조합에서는 nP0 = nC0 = 1이다. 이는 공집합의 원소의 개수는 0이지만, "공집합을 원소로 갖는 집합"의 원소의 개수는 1이기 때문. [10] 비슷하게 00 을 경우의 수나 조합수학에서 생각할 때는 보통 1로 정의한다.[11] 양수 x가 0으로 수렴할 때 xx 의 극한값은 1 이기도 하고 앞서 말한 조합적인 접근도 그렇고 00 = 1 로 보면 여러모로 편해지는 부분이 있다. 다만 00 자체는 부정인 0/0과 마찬가지인 표현이라 조심하는 것이 좋다. 자세한 설명은 이쪽에서

3 역사

  • 수로서의 0: ‘아무 것도 없음’ 혹은 ‘원점’의 개념
사실 0을 “발견” 혹은 “발명”했다는 것이 어찌 보면 매우 이상하게 여겨질지 모르겠지만, 수학의 역사에서 0은 꽤나 나중에 등장한 개념이었다. 고대 그리스 수학자들은 어떻게 없는 것이 '무언가'가 될 수 있지? 하면서 0의 존재를 부정했다고 한다. 수를 표기할 때 1은 I, 2는 II, 3은 III, 4는 IV…… 이런 식으로 나가는 로마 숫자에서도 0은 없었다. 정확히 말하자면 ‘아무 것도 없음’이라는 개념은 있었지만, 이를 수로 생각하지는 않았다.
보통 인도에서 0이 7~8세기 정도에 발명되었다고 하는 이야기는, 이들이 0을 사용해 사칙연산을 처음 하였다는 이유에서이다. 다만 0에 대한 이해가 아주 정확한 것은 아니어서 0/0 = 0 같은 잘못된 수식을 사용하곤 하였고, 0으로 나누기를 정의하지 않는다는 것은 근대에 와서야 겨우 이루어졌다. 지금도 0의 개념은 교육과정에서 아이들에게 이해시키기에 어려운 개념 중 하나이고, ‘0이 짝수인지’[12] 등의 문제는 현대인들도 가끔 혼동하는 개념. 하지만 일단 0의 개념이 정확하게 정립되면서, 수학은 획기적인 진보를 이뤄낼 수 있었다. 이는 0이 음수를 생각하는 데에 핵심인 개념이기 때문이고, 따라서 방정식을 풀고 하는 등의 모든 조작[13]을 가능하게 하기 때문.
  • 숫자로서의 0: 위치 기수법
또한 0의 “발명”이 그토록 획기적인 이유는 바로 0이 없이는 위치 기수법(positional notation)[14]을 상상할 수조차 없기 때문이다. 예를 들어서 1001이라는 숫자를 썼다고 했을 때, 맨 앞도 1이고 맨 뒤도 1인데 어떻게 하나는 천이라는 큰 값을, 하나는 일이라는 작은 값을 나타내는가? 이는 앞의 1은 ‘천의 자리’에, 뒤의 1은 ‘일의 자리’에 놓여 있기 때문이다. 즉, 숫자가 쓰인 자리(위치)에 따라 수를 나타내는,[15] 이러한 방식을 위치 기수법이라 한다.
위 1001의 예에서, 백의 자리와 십의 자리의 두 개의 0은 그 자리를 지킴으로써(placeholder), 맨 앞의 숫자 1가 천의 자리에 놓여 있음을 표시해 주고, 따라서 그 1이 숫자 천을 나타내게 해 준다. 만일 0이 없었다면 1 1(공백 2개)랑 1 1(공백 1개), 11을 어떻게 구별할 수 있겠는가? 이처럼 0이 없으면 위치 기수법은 상상할 수조차 없다.
0이 있어서 위치 기수법이 있을 수 있었고, 위치 기수법이 있어서 우리는 숫자를 0부터 9까지 10개의 자릿수(digits)만 배우면 된다. 즉 유한 개의 숫자만으로 얼마든지 큰 수를 나타낼 수 있다. 0이 없으면 10, 100, 1,000 등에 해당하는 숫자를 따로따로 배워야 했을 것이다. 예를 들어 한자, 이집트 숫자, 로마 숫자 등이 그렇다. 이런 문화권에서는 숫자가 커질 때마다 다른 기호를 계속 만들어 내야만 하는 문제가 있었고, 큰 수를 사유하는 데 일정한 장애가 된다.
한편 위치 기수법은 유한 개의 숫자만으로 엄청나게 큰 수를 나타낼 수 있는 가능성을 열었을 뿐, 실제로 나타낼 때는 자리를 많이 차지하는 문제가 있다. 큰 수를 잘 다루려면 지수의 발명이 필요했다. 아르키메데스는 그리스 숫자같은 복잡한 기수법 하에서도 지수를 이용한 큰 수 표기법을 창안해 낸 바 있다.

4 컴퓨터 과학에서

C언어를 비롯한 많은 프로그래밍 언어에서 배열의 첨자(index)는 0부터 시작한다. 포트란 혹은 코볼(COBOL)등의 초기의 언어는 역사적 관습을 따라 1부터 숫자를 셌지만, 0부터 세는 관습이 더 편리하기 때문. 예를 들어 C언어에서 배열 a[]의 i번째 원소의 주소(즉 &(a[i]))는 a+i로 매우 간단하게 주어지는데, 이는 0부터 수를 세기 때문에 가능한 것이다.

컴퓨터의 Null이라는 개념은 0과 구분되어야 한다. 개념적으로는 0은 숫자로 정의되었는데 내용이 없는 것, Null은 숫자인지 글인지 근본 조차 없는 것, 하얀 배경에 투명한 공과 하얀공을 올려놓으면 똑같아 보이지만 전혀 다르다는 정도로 생각하면 된다. Null과 0의 차이는 집합에서 {}과 {0}의 차이라고 얘기하면 쉬울려나?

계산기나 컴퓨터에 0으로 나누기를 억지로 시키면 에러가 난다. 그 이유는 계산기, 즉 컴퓨터가 하는 나눗셈은 단순하게 말하자면 계속 빼기를 해서 몇 번 뺐나를 결과로 내는 것이기 때문이다. 예를 들어 12/0을 계산한다 치면 12-0=12 12-0=12…… 으로 무한히 빼기를 하다가 컴퓨터가 과부하로 고장나게 된다. [16] 그래서 아예 하드웨어 수준에서 막는다(interrupt).[17] 윈도우 계산기를 열고 0으로 나누어 보면 "0으로 나눌 수 없습니다"라는 오류 메시지가 뜨는 것을 볼 수 있다. 이러한 인터럽트를 처리하지 않은 기계적 계산기에서는 무한히 돌아가는 계산기가 되기도 한다. 어떤 계산기는 무한으로 나온다 카더라

5 문화에서의 모습

0은 아랍어로는 '씨푸르'라고 발음하는데 '암호'라는 뜻의 영어단어인 cipher어원이 여기이며, 또 불어숫자는 chiffre(시프르)이다. 씨Foot? 보다 정확히는 아랍어 '씨푸르' صفر가 라틴어 cifra와 이탈리아어 zero의 어원이 되며, 처음에는 '숫자' 또는 '0'이라 쓰인 나중에야 cipher가 '암호'라는 뜻을 얻게 된 것.

대중문화에서 제로 또는 사이퍼라는 이름을 달고 나온 것은 0의 이미지와 어느 정도 연관이 있다. 다만 제로의 경우에는 심하게 남용되어서 '간지나는 이름' 이상의 무언가가 있다고 보기는 힘들지만... 어쨌든 0이라는 숫자는 '기원', '절대적 존재', '아무것도 없음' 등을 종종 상징한다.
혈액형도 베타, 알파 항체를 모두 가지고 있고 B항원 (B형이 가진 항원), A항원 (A형이 가진 항원) 이 없는 것을 기존에는 세 번째 혈액형이여서 C형이라고 명칭을 했으나 0, null, 없다라는 뜻에서 O형으로 이름이 바뀌었다.

보통 1이라는 숫자도 태초 또는 시작을 의미하지만, 0은 이 '1보다 더욱 근본적인 기원'을 의미하게 된다. 프로토타입의 버전이나 프리퀄의 넘버링 등에 쓰이는 용례. 또는 '모든 것을 넘어서는 절대적인 존재' 로서의 의미도 가능하다. 가장 자주 쓰이는 용례가 '0순위'. 지금은 클리셰가 되어버렸지만, 마치 블리치 등에서 당한 놈들을 능가하는 최강의 랭크 0번이 존재했다. 하는 식으로 등장하는 경우처럼.블리치에선 그냥 발리지만 때로는 '아무것도 없음'의 부정적 의미를 전달하기도 한다.

보다 자세한 것은 여기 나무위키제로사이퍼의 항목을 참고하자.

6 여담

서양에서는 0에 작대기가 쳐져 있거나(Ø)[18], 안에 점이나 선 등이 들어가 있는(Θ)[19] 것 등을 볼 수 있는데, 이는 로마자의 O(오)와 똑같이 생겨서 혼동하는 것을 막기 위한 것이다. 키보드DOS용 프로그램 등에도 이렇게 되어 있는 듯. 옛날 컴퓨터에서 글씨 크기를 충분히 작게 해서 0을 쳐 봤을 때, 한 번쯤 본 적이 있을 것이다. 프로그래밍용으로 많이 쓰는 고정폭 폰트의 경우 0이 이렇게 처리되어 있는 것을 볼 수 있다.

수도권 전철에서는 한때 90년대 후반에 있었던 역번호 개편 이전 대화역이 역번호 0번을 가진 적이 있다. 서울 지하철 3호선 개통 당시 구파발역이 시발역이었고 역 번호는 10이었다. 노선 확장을 위해 1~9번을 비워뒀는데, 이후 지축-구파발 구간이 연장되면서 지축역이 9번을 가져갔다. 그 후 일산선이 별도의 노선이 아닌 3호선 직결로 결정되면서 9개의 역이 더 생겼다. 그러다보니 맨 끝의 대화역이 0번이 된 것.

프로 스포츠에서는 야구, 농구에서만 0,00번을 사용할 수 있다.

안녕하세요에서 0이라는 숫자를 이름으로 가진 사람의 사연이 소개된 적이 있다. 이0 항목 참조.

대학에는 0학점짜리 과목들도 소수 있다.

  1. 컴퓨터 공학에서 0과 null, nil은 전혀 다른 개념이다. 뉴비들을 상당히 혼란스럽게 하는 개념. 0은 말 그대로 숫자 0, null과 nil은 0이라고 정해주는 것 조차도 없는것. 굳이 억지로 예를 들자면 '0번'이라는 번호가 부여된 것과 번호가 아예 부여되지 않은 상태의 차이. 다만 두 개념을 철저히 구분하는 시스템이 있는가 하면 내부적으로 null을 0으로써 취급하는 시스템도 있는데, 각각 장단점을 지니고 있어서 두 시스템 간의 우열을 논하기는 곤란하다.
  2. 프랑스어 Zéro에서.
  3. 영어 O에서.
  4. 말 그대로 동그라미라서. ex)スタジオ102いちまるに(스튜디오 102)
  5. 한자에서 유일하게 곡선으로만 이루어진 글자. 기기상의 이유로 안 보이는 사람들을 위해 설명하자면, ○와 동일한 형태이다.
  6. 둘 중 아무거나 써도 된다.
  7. 그렇기 때문에 '전화기에 있는 숫자를 모두 곱하면?', '열두 지지의 다리 수를 전부 곱하면?', '(n-1)(n-2)(n-3)(n-4)……(n-(n-1))(n-n)의 답은?' 등의 수수께끼의 답은 0이다.
  8. 옳지않다는 뜻의 不正이 아니라 정할 수 없다는 뜻의 不定이다. 부정방정식이나 to부정사의 그것.
  9. 임의의 수(0포함)의 1제곱은 임의의 수이므로 1은 지수연산에 대한 항등원이다.
  10. 이를 풀어쓰면 다음과 같다. 원소가 n개인 집합 S의 r-조합은 Sr = { X ⊂ A : |X| = r }의 원소의 개수 |Sr| 로 생각할 수 있다. 만약 여기서 r=0이라면 Sr은 공집합이 아니라, 공집합을 원소로 갖는 집합 {∅}이다. 이 집합의 원소의 개수는 0이 아니라 1이고, 따라서 nC0 = 1이라 자연스럽게 말할 수 있는 것. 순열의 경우에도 비슷하게 생각할 수 있다.
  11. nm은 {1, 2, ..., m}에서 {1, 2, ..., n}으로 가는 함수의 개수로 생각할 수 있다. 공집합에서 공집합으로 가는 함수는 사실 딱 하나 존재한다!
  12. 참고로 짝수 맞다. 짝수의 정의는 2로 나누어떨어지는 수인데 0/2=0이므로 역시 2로 나누어떨어지기 때문. 혹자는 이상하게 여길지 몰라도 그냥 수학적인 약속일 뿐이므로 넘어가자.
  13. 이항이라든지, 인수분해라든지, …….
  14. 10진법과는 무관하다.
  15. 앞의 ‘수’와 뒤의 ‘숫자’는 다른 의미로 쓰였다. 뒤의 ‘숫자’는 후술할 ‘자릿수’ 개념이다.
  16. 물론 실제 대부분의 프로세서는 이런 식으로 나눗셈을 계산하지는 않는다. 숫자가 커지면 너무 오래 걸리기 때문. 그래서 좀 더 빠르게 계산하기 위한 여러 알고리즘이 개발되어 있다. 하지만 0으로 나누기를 시도할 경우 그런 알고리즘들도 무한루프에 빠지거나 에러를 내뿜는다는 점은 같다.
  17. interrupt 막다, 방해하다, 간섭하다. 참고로 나누기 0 연산 시 발생하는 zero-devide 인터럽트 외에도 다양한 인터럽트가 존재한다.
  18. 예시용으로 비슷한 글자를 쓰긴했는데 엄밀히 말하면 이건 0이 아니라 덴마크등에서 쓰이는 알파벳 모음중 하나.
  19. 바로 앞 각주와 마찬가지로 예시용으로 비슷한 글자를 쓴 것으로 그리스문자 세타, 비슷하게 생긴것으로 그리스문자 파이(Φ)도 존재.