Введение

Вычислительная операция
В информатике операция взятия остатка от деления (модуля) возвращает остаток или знаковый остаток от деления одного числа на другое (называемое модулем операции). Для двух положительных чисел a и n, a по модулю n (часто сокращается как a mod n) — это остаток от евклидова деления a на n, где a — делимое, а n — делитель. Например, выражение "5 mod 2" вычисляется как 1, потому что 5, деленное на 2, имеет частное 2 и остаток 1, а выражение "9 mod 3" вычисляется как 0, потому что 9, деленное на 3, имеет частное 3 и остаток 0. Хотя обычно операция выполняется с целыми числами a и n, многие вычислительные системы теперь допускают использование других типов числовых операндов. Диапазон значений для целочисленной операции взятия остатка от деления по модулю n составляет от 0 до n − 1 (a mod 1 всегда равен 0; a mod 0 не определен, так как это деление на ноль). Если ровно одно из чисел a или n отрицательное, базовое определение становится некорректным, и языки программирования по-разному определяют значения в таких случаях.

В языках программирования

+ Операторы модуля в различных языках программирования Язык Оператор Целые числа Числа с плавающей точкой Определение ABAP Евклидово ActionScript Усеченный Ada Округленное вниз Усеченный Стандарты до этого оставляют поведение неопределенным. (C) (C++) Усеченный (C) (C++) Округленное C# Усеченный Округленное вниз Clarion Усеченный Clean Усеченный Clojure Округленное вниз Усеченный COBOL Округленное вниз Усеченный ColdFusion Усеченный Common Intermediate Language (со знаком) Усеченный (без знака) Common Lisp Округленное вниз Усеченный Crystal Округленное вниз Усеченный D Усеченный Dart Евклидово Усеченный Eiffel Усеченный Elixir Усеченный Округленное вниз Elm Округленное вниз Усеченный Erlang Усеченный Усеченный (как в C) Euphoria Округленное вниз Усеченный F# Усеченный Округленное вниз Усеченный GLSL Не определено Округленное вниз GameMaker Studio (GML) Усеченный GDScript (Godot) Усеченный Усеченный Евклидово Евклидово Go Усеченный Усеченный Евклидово Усеченный Groovy Усеченный Haskell Округленное вниз Усеченный J Округленное вниз Java Усеченный Округленное вниз JavaScriptTypeScript Усеченный Julia Округленное вниз Усеченный Kotlin Усеченный Округленное вниз ksh Усеченный (как в POSIX sh) Усеченный LabVIEW Усеченный LibreOffice Округленное вниз Logo Округленное вниз Усеченный Lua 5 Округленное вниз Lua 4 Усеченный Liberty BASIC Усеченный Mathcad Округленное вниз Maple (по умолчанию) Евклидово Округленное вниз Округленное вниз Mathematica Округленное вниз MATLAB Округленное вниз Усеченный Maxima Округленное вниз Усеченный Maya Embedded Language Усеченный Microsoft Excel Округленное вниз Minitab Округленное вниз Modula 2 Округленное вниз Усеченный MUMPS Округленное вниз Netwide Assembler (NASM, NASMX) (без знака) (со знаком) Реализация определена Nim Усеченный Oberon Округленное вниз Objective C Усеченный (как в C99) Object Pascal, Delphi Усеченный OCaml Усеченный Усеченный Occam Усеченный Pascal (ISO 7185 и 10206) Евклидово Perl Округленное вниз Усеченный Phix Округленное вниз Усеченный PHP Усеченный Усеченный PIC BASIC Pro Усеченный PL/I Округленное вниз (ANSI PL/I) PowerShell Усеченный Programming Code (PRC) Не определено Progress Усеченный Prolog (ISO 1995) Округленное вниз Усеченный PureBasic Усеченный PureScript Евклидово Pure Data Усеченный (как в C) Округленное вниз Python Округленное вниз Усеченный Q# Усеченный R Округленное вниз Racket Округленное вниз Усеченный Raku Округленное вниз RealBasic Усеченный Reason Усеченный Rexx Усеченный RPG Усеченный Ruby Округленное вниз Усеченный Rust Усеченный Евклидово SAS Усеченный Scala Усеченный Scheme Округленное вниз Усеченный Scheme R6RS Евклидово Округленное вниз Smalltalk Округленное вниз Усеченный Snap! Округленное вниз Spin Округленное вниз Solidity Округленное вниз SQL (SQL:1999) Усеченный SQL (SQL:2011) Усеченный Standard ML Округленное вниз Усеченный Stata Евклидово Swift Усеченный Округленное вниз Усеченный Tcl Округленное вниз Усеченный (как в C) tcsh Усеченный Torque Усеченный Turing Округленное вниз Verilog (2001) Усеченный VHDL Округленное вниз Усеченный VimL Усеченный Visual Basic Усеченный WebAssembly (без знака) (со знаком) Усеченный Z3 theorem prover Евклидово

Кроме того, многие компьютерные системы предоставляют функциональность, которая одновременно вычисляет частное и остаток. Примеры включают инструкцию архитектуры x86, функцию языка программирования C и функцию Python.