Bagikan melalui


Operator Aritmatika dalam Visual Basic

Operator aritmatika digunakan untuk melakukan banyak operasi aritmatika yang akrab yang melibatkan perhitungan nilai numerik yang diwakili oleh literal, variabel, ekspresi lain, panggilan fungsi dan properti, dan konstanta. Selain operator aritmetika, operator bit-shift yang bekerja pada tingkat bit individu dari operand, menggeser pola biner mereka ke kiri atau kanan.

Operasi Aritmatika

Anda dapat 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 contoh berikut.

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

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

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

Eksponensial 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 bilangan bulat mengembalikan kuota, yaitu bilangan bulat yang mewakili berapa kali pembagi dapat dibagi menjadi dividen tanpa pertimbangan sisanya. Pembagi dan dividen harus berupa jenis integral (SByte, , Byte, Short, UShortInteger, UInteger, Long, dan ULong) untuk operator ini. Semua jenis lainnya harus dikonversi ke jenis integral terlebih dahulu. Contoh berikut menunjukkan pembagian bilangan bulat.

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

Aritmatika modulus dilakukan menggunakan Operator Mod. Operator ini mengembalikan sisanya setelah membagi pembagi menjadi dividen berapa kali. Jika pembagi dan dividen adalah jenis integral, nilai yang dikembalikan adalah integral. Jika pembagi dan pembilang adalah bilangan floating-point, maka nilai yang dikembalikan juga akan berupa bilangan floating-point. Contoh berikut menunjukkan perilaku ini.

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 oleh Zero

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

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

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

Ketika Anda menangkap DivideByZeroException pengecualian, Anda dapat menggunakan anggotanya untuk membantu Anda menanganinya. Misalnya, Message properti menyimpan teks pesan untuk pengecualian. Untuk informasi selengkapnya, lihat Coba... Menangkap... Pernyataan Terakhir.

Operasi Bit-Shift

Operasi bit-shift melakukan pergeseran aritmatika pada pola bit. Pola terkandung dalam operand di sebelah kiri, sementara operand di sebelah kanan menentukan jumlah posisi untuk menggeser pola. Anda dapat 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 jumlah pergeseran operand harus Integer atau harus ditingkatkan menjadi Integer.

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

  • 0 untuk penggeseran kiri aritmatika

  • 0 untuk pergeseran aritmatika ke kanan dari bilangan positif

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

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

Contoh berikut menggeser Integer nilai 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 menciptakan luapan pengecualian.

Operasi Bitwise

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

Keamanan Tipe

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

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

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

Lihat juga