0으로 나누기(Division by zero)는 산술이나 대수학 연산에서 어떤 수를 0으로 나누는 경우를 의미하며, 수학적으로는 그 값이 정의되지 않는다. 일반적으로 나눗셈은 곱셈의 역연산으로 설명할 수 있는데, 예를 들어 $a \div b = c$라는 식은 $b \times c = a$가 성립해야 함을 전제로 한다. 그러나 0에 어떤 실수를 곱하더라도 그 결과는 항상 0이 되므로, $b$가 0인 경우에는 $b \times c = a$를 만족하는 유일한 실수 $c$를 찾을 수 없거나 모순이 발생하게 된다. 따라서 현대 수학의 표준적인 체계인 실수체 내에서 0으로 나누기는 허용되지 않는다.
0으로 나누는 상황은 크게 피제수(나어지는 수)가 0이 아닌 경우와 0인 경우의 두 가지로 나누어 설명할 수 있다. 먼저 피제수가 0이 아닌 경우($a \div 0$, $a \neq 0$), 이를 만족하는 몫을 $x$라 가정하면 $0 \times x = a$가 되어야 한다. 하지만 좌변은 항상 0이고 우변은 0이 아니므로 등식이 성립할 수 없다. 즉, 해가 존재하지 않으며 이를 수학 용어로 '불능(不能)'이라 한다. 반면 피제수도 0인 경우($0 \div 0$), 식은 $0 \times x = 0$이 되는데, 이는 $x$가 어떤 값을 가지더라도 항상 성립한다. 따라서 해가 무수히 많아 하나의 값으로 정할 수 없으므로 이를 '부정(不定)'이라 한다. 결과적으로 두 경우 모두 특정한 값을 정의할 수 없다는 결론에 이른다.
해석학의 극한(limit) 개념에서는 0으로 나누는 것과 0에 한없이 가까워지는 것을 엄밀히 구별한다. 함수 $f(x) = 1/x$에서 $x$가 0에 가까워질 때 함숫값의 절댓값은 무한히 커지며, 이를 기호 $\infty$(무한대)로 표현하기도 한다. 하지만 이것은 $x$가 0으로 다가갈 때의 상태나 경향을 설명하는 것이지, $1 \div 0$이라는 연산 자체가 무한대라는 값으로 정의된다는 뜻은 아니다. 실수의 연산 체계에서 무한대는 수가 아니며, 극한을 통해 얻은 발산의 결과와 산술 연산으로서의 0으로 나누기는 본질적으로 다른 개념이다.
컴퓨터 과학 및 프로그래밍 분야에서 0으로 나누기는 심각한 오류를 초래할 수 있는 연산이다. 정수 연산에서 0으로 나누기를 시도하면 대부분의 프로그래밍 언어나 CPU는 '0으로 나누기 오류(Division by zero exception)'를 발생시키고 프로그램 실행을 중단시킨다. 반면 부동소수점 연산(IEEE 754 표준)에서는 조금 다르게 처리되는데, 양수를 0으로 나누면 양의 무한대($+\infty$), 음수를 0으로 나누면 음의 무한대($-\infty$), 0을 0으로 나누면 '수 아님(NaN, Not a Number)'을 반환하도록 규정되어 있다. 이러한 처리가 되어 있더라도 개발자는 0으로 나누기가 발생하지 않도록 사전에 예외 처리를 해야 시스템의 논리적 오류를 막을 수 있다.
특수한 수학적 구조 내에서는 0으로 나누기를 제한적으로 정의하기도 한다. 예를 들어 리만 구면(Riemann sphere)이나 확장된 복소평면에서는 무한대($\infty$)를 하나의 점으로 포함시켜 $1 \div 0 = \infty$와 같이 정의할 수 있다. 이러한 체계는 복소해석학이나 기하학적 관점에서 유용하게 사용되지만, 기존의 사칙연산 법칙(체 공리) 중 일부를 포기해야 한다는 제약이 따른다. 따라서 일반적인 대수학이나 실생활의 산술 계산에서 0으로 나누기가 정의되지 않는다는 원칙은 여전히 유효하다.