Bagikan melalui


>> Operator (Visual Basic)

Melakukan pergeseran kanan aritmatika pada pola bit.

Sintaks

result = pattern >> amount  

Generator

result
Harus diisi. Nilai numerik integral. Hasil dari pergeseran pola bit. Jenis datanya sama dengan pattern.

pattern
Harus diisi. Ekspresi numerik integral. Pola bit yang akan digeser. Jenis data harus jenis integral (SByte, Byte, Short, UShort, Integer, UInteger, Long, atau ULong).

amount
Harus diisi. Ekspresi numerik. Jumlah bit untuk menggeser pola bit. Jenis data harus Integer atau dilebarkan menjadi Integer.

Keterangan

Pergeseran aritmatika tidak melingkar, yang berarti bit yang digeser dari salah satu ujung hasil tidak diperkenalkan kembali di ujung lainnya. Dalam pergeseran aritmatika ke kanan, bit yang digeser di luar posisi bit paling kanan dibuang, dan bit (tanda) paling kiri disebarkan ke posisi bit yang dikosongkan di sebelah kiri. Ini berarti bahwa jika pattern memiliki nilai negatif, posisi yang dikosongkan diatur ke satu; jika tidak, mereka diatur ke nol.

Perhatikan bahwa jenis data Byte, UShort, UInteger, dan ULong tidak ditandatangani, jadi tidak ada bit tanda yang akan disebarkan. Jika pattern adalah jenis yang tidak ditandatangani, posisi yang dikosongkan selalu diatur ke nol.

Untuk mencegah pergeseran bit yang lebih banyak dari yang dapat ditahan oleh hasil, Visual Basic memberi masker nilai amount dengan ukuran masker yang sesuai dengan jenis data pattern. AND biner dari nilai-nilai ini digunakan untuk jumlah pergeseran. Ukuran masker adalah sebagai berikut:

Jenis data pattern Ukuran masker (desimal) Ukuran masker (heksadesimal)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Jika amount adalah nol, nilai result identik dengan nilai pattern. Jika amount negatif, itu diambil sebagai nilai yang tidak ditandatangani dan ditutup dengan masker ukuran yang sesuai.

Pergeseran aritmatika tidak pernah menghasilkan pengecualian luapan.

Kelebihan beban

Operator >> dapat kelebihan beban, yang berarti bahwa kelas atau struktur dapat mendefinisikan ulang perilakunya saat operand memiliki jenis kelas atau struktur tersebut. Jika kode Anda menggunakan operator ini pada kelas atau struktur seperti itu, pastikan Anda memahami perilakunya yang didefinisikan ulang. Untuk informasi lebih lanjut, lihat Prosedur Operator.

Contoh

Contoh berikut menggunakan operator >> untuk melakukan pergeseran kanan aritmatika pada nilai integral. Hasilnya selalu memiliki jenis data yang sama dengan ekspresi yang digeser.

Dim pattern As Short = 2560
' The bit pattern is 0000 1010 0000 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern >> 0
result2 = pattern >> 4
result3 = pattern >> 10
result4 = pattern >> 18
result5 = pattern >> -1

Hasil dari contoh sebelumnya adalah sebagai berikut:

  • result1 adalah 2560 (0000 1010 0000 0000).

  • result2 adalah 160 (0000 0000 1010 0000).

  • result3 adalah 2 (0000 0000 0000 0010).

  • result4 adalah 640 (0000 0010 1000 0000).

  • result5 adalah 0 (bergeser 15 tempat ke kanan).

Jumlah pergeseran untuk result4 dihitung sebagai 18 AND 15, yang sama dengan 2.

Contoh berikut menunjukkan pergeseran aritmatika pada nilai negatif.

Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13

Hasil dari contoh sebelumnya adalah sebagai berikut:

  • negresult1 adalah -512 (1111 1110 0000 0000).

  • negresult2 adalah -1 (bit tanda disebarkan).

Lihat juga