Функция ОСТАТ — Служба поддержки Майкрософт

Excel

Формулы и функции

Другие функции

Другие функции

Функция ОСТАТ

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функции ОСТАТ в Microsoft Excel.

Описание

Возвращает остаток от деления аргумента «число» на значение аргумента «делитель». Результат имеет тот же знак, что и делитель.

Синтаксис

ОСТАТ(число;делитель)

Аргументы функции ОСТАТ описаны ниже.

  • Число    Обязательный. Число, остаток от деления которого требуется определить.

  • Делитель    Обязательный. Число, на которое нужно разделить (делитель).

Замечания

MOD(n; d) = n — d*INT(n/d)

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Формула

Описание

Результат

=ОСТАТ(3; 2)

Остаток от деления 3/2.

1

=ОСТАТ(-3; 2)

Остаток от деления -3/2. Знак тот же, что и у делителя

1

=ОСТАТ(3; -2)

Остаток от деления 3/-2. Знак тот же, что и у делителя

-1

=ОСТАТ(-3; -2)

Остаток от деления -3/-2. Знак тот же, что и у делителя

-1

Команда DIV


Лучшие книги по Ассемблеру

Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее…

Инструкция DIV в Ассемблере выполняет деление без знака. Использование этой инструкции похоже на работу команды MUL, хотя, конечно, имеет некоторые особенности, потому что деление — это не умножение )))

Итак, синтаксис команды DIV такой:

DIV ЧИСЛО

ЧИСЛОМ может быть один из следующих:

  • Область памяти (MEM)
  • Регистр общего назначения (REG)

Эта команда не работает с сегментными регистрами, а также не работает непосредственно с числами. То есть вот так

DIV 200 ; неправильно

делать нельзя.

А теперь алгоритм работы команды DIV:

  • Если ЧИСЛО — это БАЙТ, то AL = AX / ЧИСЛО
  • Если ЧИСЛО — это СЛОВО, то AX = (DX AX) / ЧИСЛО

Если вы уже изучили инструкцию MUL, то ничего особо нового для вас здесь нет. Ну а если не изучали, то немного напомню.

Обратите внимание, что инструкция DIV работает либо с регистром АХ, либо с парой регистров DX AX. То есть перед выполнением этой команды нам надо записать в регистр АХ или пару регистров DX AX значение, которое требуется разделить. Сделать это можно, например, с помощью уже известной нам команды MOV.

Затем надо в область памяти или в регистр общего назначения записать делитель — то есть число, на которое будем делить.

Далее мы выполняем деление, и получаем результат либо в регистр АL (если ЧИСЛО — это байт), либо в регистр AX (если ЧИСЛО — это слово).

Остаток от деления

Как вы понимаете, инструкция DIV выполняет целочисленное деление. При этом остаток от деления, если таковой имеется, будет записан:

  • В регистр АН, если ЧИСЛО — это байт
  • В регистр DX, если ЧИСЛО — это слово

Никакие флаги при этом не изменяются. А если и меняются, то об этом ничего не сказано в документации, следовательно, проверять флаги нет необходимости.

Просто если есть сомнения, что деление выполнено без остатка, надо проверить содержимое регистров AL или DX в зависимости от того, какой размер имеет ЧИСЛО.

Пример деления в Ассемблере

Итак, например, нам надо 250 разделить на 150. Тогда мы делаем так:


MOV AX, 250   ; Делимое в регистр AX
MOV BL, 150   ; Делитель в регистр BL
DIV BL        ; Теперь АL = 250 / 150 = 1, AH = 100

Обратите внимание, что нам приходится два раза использовать команду MOV, так как команда DIV не работает непосредственно с числами, а только с регистрами общего назначения или с памятью.

После выполнения этого кода в регистре АL будет результат целочисленного деления числа 250 на число 150, то есть число 1, а в регистре АН будет остаток от деления — число 100 (64 в шестнадцатеричной системе).

Теперь попробуем число 50000000 разделить на 60000.


MOV DX, 762     ; Делимое - в пару регистров DX AX
MOV AX, 61568   ; (DX AX) = 50000000
MOV BX, 60000   ; Делитель в регистр BX
DIV BX          ; Теперь АХ = 50000000 / 60000 = 833 (341h)
                ; DX = 20000 (4E20h)

Для записи делителя в пару регистров DX и AX используются две команды MOV. В нашем примере в регистр DX будет записано число 762 (02FA — в шестнадцатеричной системе), а в регистр АХ — число 61568 (F080 — в шестнадцатеричной системе). А если рассматривать их как одно число (двойное слово), где в старшем слове 762, а в младшем — 61568, то это и будет 50000000 (2FAF080 — в шестнадцатеричной системе).

Затем в регистр BX мы записываем число 60000 и выполняем команду деления. В результате в регистре АХ будет число 833 (или 341 в шестнадцатеричной системе), в регистре DX — остаток от деления, который в нашем случае будет равен 20000 (или 4E20 в шестнадцатеричной системе).

В конце как обычно расскажу, почему эта команда ассемблера называется DIV. Это сокращение от английского слова DIVIDE, которое можно перевести как “разделить”.


Подписаться на Дзен-канал

Вступить в группу «Основы программирования»

Подписаться на рассылки по программированию


Первые шаги в программирование

Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее…


go — Деление с возвратом частного и остатка

спросил

Изменено 2 месяца назад

Просмотрено 38 тысяч раз

Я пытаюсь перейти с Python на Golang. В настоящее время я исследую некоторые математические операции и задаюсь вопросом, как я могу получить как частное, так и остаточное значение с результатом деления. Я собираюсь поделиться ниже эквивалентом кода Python.

 часов, остаток = divmod(5566, 3600)
минуты, секунды = divmod(остаток, 60)
print('%s:%s' % (минуты, секунды))
# 32:46
 

Наверху будет моя цель. Спасибо.

Это достигается целочисленным делением плюс модуль.

 func divmod(числитель, знаменатель int64) (частное, остаток int64) {
    частное = числитель / знаменатель // целочисленное деление, десятичные дроби усекаются
    остаток = числитель% знаменатель
    возвращаться
}
 

https://play.golang.org/p/rimqraYE2B

Редактировать: Определения

Частное , в контексте целочисленного деления, представляет собой число целых раз, когда числитель входит в знаменатель. Другими словами, это идентично десятичной записи: FLOOR(n/d)

Модуль дает остаток от такого деления. Модуль числителя и знаменателя всегда будет между 0 и d-1 (где d — знаменатель)

1

если вы хотите однострочник,

 частное, остаток:= числитель/знаменатель, числитель%знаменатель
 

Если у вас есть 32-битный номер, вы можете использовать один из них:

 основной пакет
импортировать "математику/биты"
основная функция () {
   { // пример 1
      переменная uint = 4294967295
      q, r := биты. Div(0, n, 2)
      println(q == n / 2, r == 1)
   }
   { // пример 2
      переменная uint32 = 4294967295
      q, r := биты.Div32(0, n, 2)
      println(q == n / 2, r == 1)
   }
}
 

Если у вас 64-битный номер, вы можете сделать это так:

 основной пакет
импортировать "математику/биты"
основная функция () {
   переменная uint64 = 18446744073709551615
   q, r := биты. Div64 (0, n, 2)
   println(q == n / 2, r == 1)
}
 

Если у вас что-то больше 64 бит, вы можете сделать это так:

 package main
импортировать "математику/биты"
основная функция () {
   q, r := биты. Div64 (1, 0, 2)
   println(q == 9223372036854775808, r == 0)
}
 
  • https://golang.org/pkg/math/bits#Div
  • https://golang.org/pkg/math/bits#Div32
  • https://golang.org/pkg/math/bits#Div64

Я сделал эту функцию, возможно, это то, что вы ищете.

 //QuotientAndRemainderF32 Вычисляет целочисленное частное и остаток входных данных. Эта функция округляет пол(x/y) до ближайшего целого числа в сторону -inf. 
func QuotientAndRemainderF32(x, y float32) (Остаток, Quotient float32) {
    Частное = float32(math.Floor(float64(x/y)))
    Остаток = x - y * Частное
    вернуть остаток, частное
}
 

1

Я думаю, что этот вопрос неясен: вы ищете что-то эквивалентное divmod Python или просто функцию, которая возвращает частное и напоминание?

Эти решения не эквивалентны divmod Python , поскольку они возвращают напоминание вместо модуля. Таким образом, они не работают одинаково с отрицательными числами.

В Python divmod(-7, 4) возвращает -2, 1 . Ответы здесь возвращают -1, 3 .

Я предлагаю

 func DivMod(n, d int64) (q, r int64) {
    д = н / д
    г = п % д
    // числитель или знаменатель отрицательны (но не оба)
    если г != 0 && n*d < 0 {
        д--
        р += д
    }
    возвращаться
}
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

\ Оператор — Visual Basic

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 2 минуты на чтение

Делит два числа и возвращает целое число.

Синтаксис

 выражение1 \ выражение2
 

Детали

выражение1
Обязательно. Любое числовое выражение.

выражение2
Обязательно. Любое числовое выражение.

Поддерживаемые типы

Все числовые типы, включая типы без знака и с плавающей запятой, а также Decimal .

Результат

Результатом является целочисленное частное выражение1 , деленное на выражение2 , при котором любой остаток отбрасывается и сохраняется только целая часть. Это известно как усечение .

Тип данных результата является числовым типом, подходящим для типов данных выражение1 и выражение2 . См. таблицы «Целая арифметика» в разделе «Типы данных результатов оператора».

Оператор / (Visual Basic) возвращает полное частное, сохраняя остаток в дробной части.

Перед выполнением деления Visual Basic пытается преобразовать любое числовое выражение с плавающей запятой в Long . Если Option Strict равно При возникает ошибка компилятора. Если Option Strict равно Off , возможно исключение OverflowException, если значение выходит за пределы диапазона длинного типа данных. Преобразование в Длинный также подлежит округлению банком . Дополнительные сведения см. в разделе «Дробные части» в разделе «Функции преобразования типов».

Если выражение1 или выражение2 оценивается как Ничего, оно считается нулевым.

Попытка деления на ноль

Если выражение2 оценивается как ноль, оператор \ генерирует исключение DivideByZeroException. Это верно для всех числовых типов данных операндов.

Примечание

Оператор \ может быть перегружен , что означает, что класс или структура могут переопределить свое поведение, когда операнд имеет тип этого класса или структуры.