Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los operadores aritméticos se usan para realizar muchas de las operaciones aritméticas conocidas que implican el cálculo de valores numéricos representados por literales, variables, otras expresiones, llamadas a funciones y propiedades y constantes. Los operadores de desplazamiento de bits, que también se clasifican como operadores aritméticos, actúan a nivel de los bits individuales de los operandos y desplazan sus secuencias de bits hacia la izquierda o hacia la derecha.
Operaciones aritméticas
Puede agregar dos valores en una expresión junto con el operador + o restar uno de otro con - Operator (Visual Basic), como se muestra en el ejemplo siguiente.
Dim x As Integer
x = 67 + 34
x = 32 - 12
La negación también usa el operador - Operator (Visual Basic), pero con un solo operando, como se muestra en el ejemplo siguiente.
Dim x As Integer = 65
Dim y As Integer
y = -x
La multiplicación y la división usan el operador * y/ Operador (Visual Basic), respectivamente, como se muestra en el ejemplo siguiente.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
Exponentiation usa el operador ^ , como se muestra en el ejemplo siguiente.
Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).
La división de enteros se lleva a cabo mediante \ Operator (Visual Basic). La división de enteros devuelve el cociente, es decir, el entero que representa el número de veces que el divisor puede dividirse en el dividendo sin tener en cuenta ningún resto. Tanto el divisor como el dividendo deben ser tipos enteros (SByte, Byte, ShortUShort, Integer, UInteger, , Longy ULong) para este operador. Todos los demás tipos se deben convertir primero en un tipo entero. En el ejemplo siguiente se muestra la división de enteros.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
La aritmética del módulo se realiza mediante el operador Mod. Este operador devuelve el resto después de dividir el divisor en el dividendo un número entero de veces. Si ambos divisores y dividendos son tipos enteros, el valor devuelto es entero. Si divisor y dividendo son tipos de punto flotante, el valor devuelto también es de punto flotante. El siguiente ejemplo demuestra este comportamiento.
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.
Intento de división por cero
La división por cero tiene resultados diferentes en función de los tipos de datos implicados. En divisiones integrales (SByte, Byte, Short, UShortInteger, UInteger, LongULong), .NET Framework produce una DivideByZeroException excepción. En las operaciones de división en los tipos de datos Decimal o Single, la .NET Framework también lanza una excepción DivideByZeroException.
En divisiones de punto flotante que implican el Double tipo de datos, no se produce ninguna excepción y el resultado es el miembro de clase que representa NaN, PositiveInfinityo NegativeInfinity, dependiendo del dividendo. En la tabla siguiente se resumen los distintos resultados de intentar dividir un Double valor por cero.
| Tipo de datos de dividendo | Tipo de datos divisor | Valor de dividendo | Resultado |
|---|---|---|---|
Double |
Double |
0 | NaN (no un número definido matemáticamente) |
Double |
Double |
> 0 | PositiveInfinity |
Double |
Double |
< 0 | NegativeInfinity |
Al detectar una excepción DivideByZeroException, puede usar sus miembros para ayudarle a controlarla. Por ejemplo, la Message propiedad contiene el texto del mensaje para la excepción. Para obtener más información, vea Instrucción Try...Catch...Finally (Visual Basic).
Operadores de desplazamiento
Una operación de desplazamiento de bits realiza un cambio aritmético en un patrón de bits. El patrón se encuentra en el operando de la izquierda, mientras que el operando de la derecha especifica el número de posiciones para desplazar el patrón. Puede desplazar el patrón a la derecha con el >> operador o a la izquierda con el << operador .
El tipo de datos del operando de patrón debe ser SByte, Byte, ShortUShortInteger, UInteger, o . LongULong El tipo de datos del operando shift amount debe ser Integer o debe ampliarse a Integer.
Los desplazamientos aritméticos no son circulares, lo que significa que los bits desplazados fuera de un extremo del resultado no se vuelven a introducir en el otro extremo. Las posiciones de bits liberadas por un desplazamiento se determinan de la siguiente manera:
0 para un desplazamiento aritmético a la izquierda
0 para un desplazamiento aritmético a la derecha de un número positivo
0 para un desplazamiento aritmético a la derecha de un tipo de datos sin signo (
Byte,UShort,UInteger,ULong)1 para un desplazamiento aritmético a la derecha de un número negativo (
SByte,Short,IntegeroLong)
En el ejemplo siguiente se desplaza un Integer valor hacia la izquierda y la derecha.
Dim lResult, rResult As Integer
Dim pattern As Integer = 12
' The low-order bits of pattern are 0000 1100.
lResult = pattern << 3
' A left shift of 3 bits produces a value of 96.
rResult = pattern >> 2
' A right shift of 2 bits produces value of 3.
Los desplazamientos aritméticos nunca generan excepciones de desbordamiento.
Operaciones a nivel de bits
Además de ser operadores lógicos, Not, Or, Andy Xor también realizan aritmética bit a bit cuando se usan en valores numéricos. Para obtener más información, vea "Operaciones bit a bit" en Operadores lógicos y bit a bit en Visual Basic.
Seguridad de tipos
Normalmente, los operandos deben ser del mismo tipo. Por ejemplo, si va a sumar una Integer variable, debe sumarla a otra Integer variable y también debe asignar el resultado a una variable de tipo Integer.
Una manera de garantizar una buena práctica de codificación segura para tipos es usar la instrucción Option Strict. Si estableces Option Strict On, Visual Basic realiza automáticamente conversiones seguras para tipos. Por ejemplo, si intenta agregar una Integer variable a una Double variable y asignar el valor a una Double variable, la operación continúa normalmente, ya que Integer un valor se puede convertir a Double sin pérdida de datos. Por otro lado, las conversiones no seguras de tipos provocan un error del compilador con Option Strict On. Por ejemplo, si intenta agregar una Integer variable a una Double variable y asignar el valor a una Integer variable, se produce un error del compilador, ya que una Double variable no se puede convertir implícitamente en el tipo Integer.
Sin embargo, si establece Option Strict Off, Visual Basic permite que se produzcan conversiones implícitas de restricción, aunque pueden provocar la pérdida inesperada de datos o precisión. Por este motivo, se recomienda usar Option Strict On al escribir código de producción. Para obtener más información, consulta Widening and Narrowing Conversions.