Bagikan melalui


>> Operator (Visual Basic)

Melakukan pergeseran kanan aritmatika pada pola bit.

Sintaksis

result = pattern >> amount  

Bagian

result
Dibutuhkan. Nilai numerik integral. Hasil pergeseran pola bit. Jenis data sama patterndengan .

pattern
Dibutuhkan. Ekspresi numerik integral. Pola bit yang akan digeser. Jenis data harus merupakan jenis integral (SByte, , , Short, UShort, UIntegerInteger, , Long, atau ULongByte).

amount
Dibutuhkan. Ekspresi numerik. Jumlah bit untuk menggeser pola bit. Jenis data harus atau diperluas Integer ke Integer.

Komentar

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

Perhatikan bahwa jenis Bytedata , , UShortUInteger, dan ULong tidak ditandatangani, sehingga tidak ada bit tanda untuk disebarluaskan. Jika pattern dari jenis yang tidak ditandatangani, posisi kosong selalu diatur ke nol.

Untuk mencegah pergeseran dengan lebih banyak bit daripada yang dapat ditahan hasilnya, Visual Basic menutupi nilai amount dengan masker ukuran yang sesuai dengan jenis patterndata . Biner DAN dari nilai-nilai ini digunakan untuk jumlah shift. Ukuran masker adalah sebagai berikut:

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

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

Pergeseran aritmatika tidak pernah menciptakan luapan pengecualian.

Beban Berlebih

Operator >> dapat kelebihan beban, yang berarti bahwa kelas atau struktur dapat menentukan kembali perilakunya ketika operand memiliki jenis kelas atau struktur tersebut. Jika kode Anda menggunakan operator ini pada kelas atau struktur seperti itu, pastikan Anda memahami perilaku yang ditentukan ulang. Untuk informasi selengkapnya, 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 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 (digeser 15 tempat ke kanan).

Jumlah shift untuk result4 dihitung sebagai 18 DAN 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 contoh sebelumnya adalah sebagai berikut:

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

  • negresult2 -1 (bit tanda disebarluaskan).

Lihat juga