Operator Aritmatika dalam Visual Basic

Operator aritmatika digunakan untuk melakukan banyak operasi aritmatika familier yang melibatkan perhitungan nilai numerik yang diwakili oleh literal, variabel, ekspresi lain, panggilan fungsi dan properti, dan konstanta. Hal lain yang juga diklasifikasikan dengan operator aritmatika adalah operator bit-shift, yang bertindak pada tingkat bit individu operan dan menggeser pola bit mereka ke kiri atau kanan.

Operasi Aritmatika

Anda bisa menambahkan dua nilai dalam ekspresi bersama dengan + Operator, atau mengurangi satu dari yang lain dengan - Operator (Visual Basic), seperti yang ditunjukkan contoh berikut.

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

Negasi juga menggunakan - Operator (Visual Basic), tetapi hanya dengan satu operand, seperti yang ditunjukkan oleh contoh berikut ini.

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

Perkalian dan pembagian menggunakan * Operator dan / Operator (Visual Basic), secara berurutan, seperti yang ditunjukkan contoh berikut.

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

Eksponensiasi menggunakan ^ Operator, seperti yang ditunjukkan contoh berikut.

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

Pembagian bilangan bulat dilakukan menggunakan \ Operator (Visual Basic). Pembagian Integer mengembalikan hasil bagi, yaitu bilangan bulat yang mewakili berapa kali pembagi bisa dibagi menjadi dividen tanpa mempertimbangkan sisanya. Pembagi dan dividen harus berupa jenis integral (SByte, Byte, Short, UShort, Integer, UInteger, Long, dan ULong) untuk operator ini. Semua jenis lainnya harus dikonversi menjadi tipe integral terlebih dahulu. Contoh berikut ini menunjukkan pembagian bilangan bulat.

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

Aritmetika modulus dilakukan menggunakan Operator Mod. Operator ini mengembalikan sisanya setelah membagi pembagi menjadi dividen pada jumlah yang tidak terpisahkan. Jika pembagi dan dividen adalah jenis integral, nilai yang dikembalikan merupakan bagian integral. Jika pembagi dan dividen adalah tipe floating-point, nilai yang dikembalikan juga merupakan floating-point. Contoh berikut ini menunjukkan perilaku tersebut.

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.

Percobaan Pembagian dengan Nol

Pembagian dengan nol memiliki hasil yang berbeda tergantung pada tipe data yang dilibatkan. Dalam divisi integral (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), .NET Framework melemparkan pengecualian DivideByZeroException. Dalam operasi pembagian pada jenis data Decimal atau Single, .NET Framework juga memberikan pengecualian DivideByZeroException.

Dalam pembagian floating-point yang melibatkan jenis data Double, tidak ada pengecualian yang dilemparkan, dan hasilnya adalah anggota kelas yang mewakili NaN, PositiveInfinity, atau NegativeInfinity, tergantung pada dividen. Tabel berikut ini meringkas berbagai hasil upaya untuk membagi nilai Double dengan nol.

Tipe data dividen Tipe data pembagi Nilai dividen Hasil
Double Double 0 NaN (bukan angka yang ditentukan secara matematis)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

Saat Anda menangkap pengecualian DivideByZeroException, Anda bisa menggunakan anggotanya untuk membantu Anda menanganinya. Misalnya, properti Message menyimpan teks pesan untuk pengecualian. Untuk informasi selengkapnya, lihat Pernyataan Try...Catch...Finally.

Operasi Bit-Shift

Operasi bit-shift melakukan pergeseran aritmatika pada pola bit. Pola ini terkandung dalam operand di sebelah kiri, sedangkan operand di sebelah kanan menentukan jumlah posisi untuk menggeser pola. Anda bisa mengalihkan pola ke kanan dengan >> Operator atau ke kiri dengan << Operator.

Jenis data dari operand pola harus SByte, Byte, Short, UShort, Integer, UInteger, Long, atau ULong. Jenis data dari jumlah pergeseran operand harus Integer atau harus dilebarkan ke Integer.

Pergeseran aritmatika tidak melingkar, yang berarti bit yang digeser dari salah satu ujung hasil tidak diperkenalkan kembali di ujung lainnya. Posisi bit yang dikosongkan oleh shift ditetapkan sebagai berikut:

  • 0 untuk pergeseran kiri aritmatika

  • 0 untuk pergeseran kanan aritmatika dari angka positif

  • 0 untuk pergeseran kanan aritmatika dari jenis data yang tidak ditandatangani (Byte, UShort, UInteger, ULong)

  • 1 untuk pergeseran kanan aritmatika dari angka negatif (SByte, Short, Integer, atau Long)

Contoh berikut menggeser nilai Integer baik kiri maupun kanan.

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.

Pergeseran aritmatika tidak pernah menghasilkan pengecualian luapan.

Operasi Bitwise

Selain menjadi operator logis, Not, Or, And, dan Xor juga melakukan aritmatika bitwise saat digunakan pada nilai numerik. Untuk informasi selengkapnya, lihat "Operasi Bitwise" di Operator Logis dan Bitwise di Visual Basic.

Keamanan Jenis

Operand biasanya harus dari jenis yang sama. Misalnya, jika Anda melakukan penambahan dengan variabel Integer, Anda harus menambahkannya ke variabel Integer yang lain, dan Anda juga harus menetapkan hasilnya ke variabel jenis Integer.

Salah satu cara untuk memastikan praktik pengodean jenis aman yang baik adalah dengan menggunakan Pernyataan Ketat Opsi. Jika Anda mengatur Option Strict On, Visual Basic secara otomatis melakukan konversi jenis aman. Misalnya, jika Anda mencoba menambahkan variabel Integer ke variabel Double dan menetapkan nilainya ke variabel Double, operasi berlangsung normal, karena nilai Integer dapat dikonversi ke Double tanpa kehilangan data. Konversi tipe tidak aman, sebaliknya, menyebabkan kesalahan pengkompilasi dengan Option Strict On. Misalnya, jika Anda mencoba menambahkan variabel Integer ke variabel Double dan menetapkan nilainya ke variabel Integer, hasil kesalahan pengkompilasi, karena variabel Double tidak dapat dikonversi secara implisit ke jenis Integer.

Namun, jika Anda mengatur Option Strict Off, Visual Basic memungkinkan konversi penyempitan implisit terjadi, meskipun bisa mengakibatkan hilangnya data atau presisi yang tidak terduga. Untuk alasan ini, kami sarankan Anda menggunakan Option Strict On ketika menulis kode produksi. Untuk informasi selengkapnya, lihat Konversi Pelebaran dan Penyempitan.

Lihat juga