Язык программирования бейсик mod

Арифметические операторы в Visual Basic

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

Арифметические операции

Вы можете сложить два значения в выражении вместе с оператором + или вычесть одно из другого с помощью оператора — (Visual Basic), как показано в следующем примере.

Dim x As Integer x = 67 + 34 x = 32 - 12 

Отрицание также использует оператор — (Visual Basic), но только с одним операндом, как показано в следующем примере.

Dim x As Integer = 65 Dim y As Integer y = -x 

Умножение и деление используют операторы * и / (Visual Basic) соответственно, как показано в следующем примере.

Dim y As Double y = 45 * 55.23 y = 32 / 23 

В экспоненциации используется оператор ^, как показано в следующем примере.

Dim z As Double z = 23 ^ 3 ' The preceding statement sets z to 12167 (the cube of 23). 

Целочисленное деление выполняется с помощью оператора \ (Visual Basic). Целочисленное деление возвращает коэффициент, т. е. целое число, представляющее количество делений, которые делитель может разделить на дивиденд без учета остатка. И делитель, и дивиденд должны быть целочисленными типами ( SByte , Byte , Short , UShort , Integer UInteger , Long , и ULong ) для этого оператора. Все остальные типы сначала должны быть преобразованы в целочисленный тип. В следующем примере показано целочисленное деление.

Dim k As Integer k = 23 \ 5 ' The preceding statement sets k to 4. 

Арифметика модуля выполняется с помощью оператора Mod. Этот оператор возвращает остаток после деления делителя на дивиденд целое число раз. Если и делитель, и дивиденд являются целочисленными типами, возвращаемое значение является целочисленным. Если делитель и дивиденд являются типами с плавающей запятой, возвращаемое значение также является плавающей запятой. Следующий пример демонстрирует эту ситуацию.

Dim x As Integer = 100 Dim y As Integer = 6 Dim z As Integer z = x Mod y ' The preceding statement sets z to 4. 
Dim a As Double = 100.3 Dim b As Double = 4.13 Dim c As Double c = a Mod b ' The preceding statement sets c to 1.18. 

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

Деление на ноль имеет разные результаты в зависимости от используемых типов данных. В целочисленных подразделениях ( SByte , Byte , Short , UShort , Integer UInteger , Long , , ) ULong платформа .NET Framework вызывает DivideByZeroException исключение. В операциях деления с типом Decimal данных или Single платформа .NET Framework также вызывает DivideByZeroException исключение.

Читайте также:  Процедурные языки программирования определение

В делениях с плавающей запятой, связанных с типом Double данных, исключение не возникает, и результатом является член класса, представляющий NaN, PositiveInfinityили NegativeInfinity, в зависимости от дивиденда. В следующей таблице перечислены различные результаты попытки разделить Double значение на ноль.

Тип данных дивидендов Тип данных делителя Дивидендная стоимость Результат
Double Double 0 NaN (не математически определенное число)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

При перехвате DivideByZeroException исключения можно использовать его члены для его обработки. Например, Message свойство содержит текст сообщения для исключения. Дополнительные сведения см. в разделе Оператор Try. Catch. Finally.

Операции Bit-Shift

Операция битового сдвига выполняет арифметическое смещение по битовой схеме. Шаблон содержится в операнде слева, а операнд справа указывает количество позиций для сдвига шаблона. Шаблон можно сместить вправо с >> помощью оператора или влево с

Тип данных операнда шаблона должен быть , , , , , , UInteger , Long , или ULong . Integer UShort Short Byte SByte Тип данных операнда суммы сдвига должен быть Integer или должен быть расширен до Integer .

Арифметические сдвиги не являются циклическими, что означает, что биты, сдвинутые с одного конца результата, не повторно вводятся на другом конце. Битовые позиции, освобожденные при смещении, задаются следующим образом:

  • 0 для арифметического сдвига влево
  • 0 для арифметического сдвига вправо положительного числа
  • 0 для арифметического сдвига вправо типа данных без знака ( Byte , , UShort UInteger , ULong )
  • 1 для арифметического сдвига вправо отрицательного числа ( SByte , , Short Integer или Long )

В следующем примере значение смещается как влево, Integer так и вправо.

Dim lResult, rResult As Integer Dim pattern As Integer = 12 ' The low-order bits of pattern are 0000 1100. lResult = pattern > 2 ' A right shift of 2 bits produces value of 3. 

Арифметические сдвиги никогда не создают исключения переполнения.

Битовые операции

Помимо логических операторов, Not , Or , And и Xor также выполняют побитовую арифметику при использовании с числовыми значениями. Дополнительные сведения см. в разделе «Побитовые операции» статьи Логические и побитовые операторы в Visual Basic.

Безопасность типов

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

Одним из способов обеспечения правильного типобезопасного кодирования является использование оператора Option Strict. Если задано Option Strict On значение , Visual Basic автоматически выполняет типобезопасные преобразования. Например, при попытке добавить переменную Integer в переменную Double и присвоить ей Double значение, операция будет выполняться нормально, так как Integer значение можно преобразовать Double в без потери данных. С другой стороны, небезопасные преобразования типа вызывают ошибку компилятора с Option Strict On . Например, при попытке добавить переменную в переменную Double и присвоить Integer ей значение, возникает ошибка компилятора, так как переменная Double не может быть неявно преобразована в тип Integer . Integer

Однако если задать Option Strict Off , Visual Basic позволяет выполнять неявные сужающие преобразования, хотя они могут привести к неожиданной потере данных или точности. По этой причине рекомендуется использовать Option Strict On при написании рабочего кода. Для получения дополнительной информации см. Widening and Narrowing Conversions.

См. также раздел

Источник

Оператор Mod (Visual Basic)

result
Обязательный. Любая числовая переменная или свойство.

number1
Обязательный. Произвольное числовое выражение.

number2
Обязательный. Произвольное числовое выражение.

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

все числовые типы. Сюда входят типы unsigned и с плавающей запятой и Decimal .

Результат

Результатом является остаток после number1 деления на number2 . Например, выражение 14 Mod 4 принимает значение 2.

Существует разница между остатком и модулю в математике , с разными результатами для отрицательных чисел. Оператор Mod в Visual Basic, оператор платформа .NET Framework op_Modulus и базовая инструкция rem IL выполняют операцию остатка.

Результат Mod операции сохраняет знак дивиденда, number1 и поэтому он может быть положительным или отрицательным. Результат всегда находится в диапазоне (- number2 , number2 ), монопольно. Пример:

Public Module Example Public Sub Main() Console.WriteLine($" 8 Mod 3 = ") Console.WriteLine($"-8 Mod 3 = ") Console.WriteLine($" 8 Mod -3 = ") Console.WriteLine($"-8 Mod -3 = ") End Sub End Module ' The example displays the following output: ' 8 Mod 3 = 2 ' -8 Mod 3 = -2 ' 8 Mod -3 = 2 ' -8 Mod -3 = -2 

Remarks

Если значение number1 или number2 является значением с плавающей запятой, возвращается остаток деления с плавающей запятой. Тип данных результата — это наименьший тип данных, который может содержать все возможные значения, полученные в результате деления с типами number1 данных и number2 .

Если number1 значение или number2 имеет значение Nothing, оно обрабатывается как ноль.

К связанным операторам относятся следующие:

  • Оператор \ (Visual Basic) возвращает целочисленный коэффициент деления. Например, выражение 14 \ 4 принимает значение 3.
  • Оператор / (Visual Basic) возвращает полное частное значение, включая остаток, в виде числа с плавающей запятой. Например, выражение 14 / 4 имеет значение 3,5.

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

Если number2 значение равно нулю, поведение Mod оператора зависит от типа данных операндов:

  • Целочисленное деление вызывает DivideByZeroException исключение, если number2 не удается определить во время компиляции, и создает ошибку BC30542 Division by zero occurred while evaluating this expression во время компиляции, если number2 вычисляется до нуля во время компиляции.
  • Деление с плавающей запятой возвращает Double.NaN.

Эквивалентная формула

Выражение a Mod b эквивалентно любой из следующих формул:

Неточным числом с плавающей запятой

При работе с числами с плавающей запятой следует помнить, что они не всегда имеют точное десятичное представление в памяти. Это может привести к непредвиденным результатам определенных операций, таких как сравнение значений Mod и оператор . Дополнительные сведения см. в разделе Устранение неполадок с типами данных.

Перегрузка

Оператор Mod может быть перегружен, что означает, что класс или структура могут переопределить его поведение. Если ваш код применяется к Mod экземпляру класса или структуры, которая включает в себя такую перегрузку, убедитесь, что вы понимаете его переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.

Пример 1

В следующем примере оператор используется для Mod деления двух чисел и возврата только оставшейся части. Если любое из этих чисел является числом с плавающей запятой, результатом будет число с плавающей запятой, представляющее остаток.

Debug.WriteLine(10 Mod 5) ' Output: 0 Debug.WriteLine(10 Mod 3) ' Output: 1 Debug.WriteLine(-10 Mod 3) ' Output: -1 Debug.WriteLine(12 Mod 4.3) ' Output: 3.4 Debug.WriteLine(12.6 Mod 5) ' Output: 2.6 Debug.WriteLine(47.9 Mod 9.35) ' Output: 1.15 

Пример 2

В следующем примере демонстрируется потенциальная нетка операндов с плавающей запятой. В первом операторе операнды — , а 0,2 — это бесконечно повторяющаяся Double двоичная дробь с сохраненным значением 0,2000000000000001. Во втором операторе символ D литерального типа приводит оба операнда к Decimal , а 0,2 имеет точное представление.

firstResult = 2.0 Mod 0.2 ' Double operation returns 0.2, not 0. secondResult = 2D Mod 0.2D ' Decimal operation returns 0. 

См. также раздел

Источник

Basic — Modulo: mod

Using the modulo operator we can calculate the remainder after integer division. by using the modulo operator we can easily test the divisibility of integers, if the result is 0, then the number is divisible without a remainder.

mod

Description

Input

Output

Examples

Basic

x = 90 mod 8 ' x = 2 y = 15 mod 4 ' y = 3 z = (x mod y) mod 5' z = 2

Basic

i mod 4 121 mod 40 (&Hff mod 50 mod 10) mod 2

Basic

Источник

Оцените статью