>> 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).