注意只能對(duì)整型執(zhí)行按位運(yùn)算。浮點(diǎn)值必須轉(zhuǎn)換為整型后,才能執(zhí)行按位運(yùn)算。按位運(yùn)算采用二進(jìn)制(以 2 為基)形式計(jì)算兩個(gè)整數(shù)值。它們比較對(duì)應(yīng)位置上的位,然后基于比較的結(jié)果賦值。下面的示例演示了 And 運(yùn)算符。復(fù)制Dim x As Integerx = 3 And 5 前面的示例將 x 的值設(shè)置為 1。發(fā)生這種情況的原因如下:這些值以二進(jìn)制形式處理:二進(jìn)制格式的 3 為 011二進(jìn)制格式的 5 為 101And 運(yùn)算符比較這些二進(jìn)制表示方式,一次比較一個(gè)二進(jìn)制位置(位)。如果給定位置的兩個(gè)位都為 1,則將 1 放在結(jié)果中的該位置。如果任何一個(gè)位是 0,則將 0 放在結(jié)果中的該位置。在前面的示例中,按如下所示計(jì)算結(jié)果:011(二進(jìn)制格式的 3)101(二進(jìn)制格式的 5)001(二進(jìn)制格式的計(jì)算結(jié)果)計(jì)算結(jié)果以十進(jìn)制形式處理。值 001 是 1 的二進(jìn)制表示形式,因此 x = 1。除了在任何一個(gè)比較位是 1 或兩個(gè)比較位都是 1 的情況下將 1 賦予結(jié)果位以外,按位 Or 運(yùn)算與此類似。Xor 在比較的位正好只有一個(gè)是 1(而不是兩者都是 1)時(shí)將 1 賦給結(jié)果位。Not 采用單個(gè)操作數(shù)并反轉(zhuǎn)所有位(包括符號(hào)位),然后將該值賦予結(jié)果。這意味著,對(duì)于有符號(hào)正數(shù),Not 始終返回負(fù)值,而對(duì)于負(fù)數(shù),Not 始終返回正值或零。AndAlso 和OrElse 運(yùn)算符不支持按位運(yùn)算。 追問: 好復(fù)雜啊...還是不會(huì),還有整數(shù)怎么轉(zhuǎn)換為二進(jìn)制數(shù)? 回答: 為什么一定要用位運(yùn)算呢,你那個(gè)乘法只能通過左移操作符“
成都創(chuàng)新互聯(lián)主營(yíng)魯山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),魯山h5小程序定制開發(fā)搭建,魯山網(wǎng)站營(yíng)銷推廣歡迎魯山等地區(qū)企業(yè)咨詢
TextBox1.Text?=?7?And?10
TextBox1.Text?=?7?Or?10
TextBox1.Text?=?7?Xor?10
TextBox1.Text?=?Not?10
TextBox1.Text?=?7??10
TextBox1.Text?=?7??10
如這些,我在VB.Net中也找不到shl和shr運(yùn)算符~
不過可以通過"自定義運(yùn)算符"來寫出我們想要的功能
邏輯運(yùn)算符中所含的And 運(yùn)算符,Eqv 運(yùn)算符,Imp 運(yùn)算符,Not 運(yùn)算符,Or 運(yùn)算符,Xor 運(yùn)算符等均可用來實(shí)現(xiàn)位運(yùn)算。
算術(shù)運(yùn)算符的* 運(yùn)算符,\ 運(yùn)算符可用于左移和右移位運(yùn)算。
And 運(yùn)算符,還對(duì)兩個(gè)數(shù)值表達(dá)式中位置相同的位進(jìn)行逐位比較,并根據(jù)下表對(duì) result 中相應(yīng)的位進(jìn)行設(shè)置:
Or 運(yùn)算符,對(duì)兩個(gè)數(shù)值表達(dá)式中位置相同的位進(jìn)行逐位比較,并根據(jù)下表對(duì) result 中相應(yīng)的位進(jìn)行設(shè)置:
Xor 運(yùn)算符既可作為邏輯運(yùn)算符,也可作為位運(yùn)算符。使用互斥或的邏輯進(jìn)行的兩個(gè)表達(dá)式的逐位比較,其結(jié)果通過下表說明:
詳細(xì)的參考:MSDN6.0關(guān)于運(yùn)算符的介紹。
我其實(shí)說的就是.net 位移運(yùn)算符 這倆,沒有所謂的位移等于 = =
VB賦值運(yùn)算符中沒有 你寫的 只有+=,-=,/=,*=.^=,=這幾個(gè)
比較運(yùn)算符中也沒有,只有=,= 這倆
所以你的問題,無法回答
對(duì)位模式執(zhí)行數(shù)學(xué)左移位。
result = pattern amount
各部分說明
result
必選。整型數(shù)值。對(duì)該位模式進(jìn)行移位的結(jié)果。數(shù)據(jù)類型與 pattern 的數(shù)據(jù)類型相同。
pattern
必選。整型數(shù)值表達(dá)式。要進(jìn)行移位的位模式。數(shù)據(jù)類型必須為整型(SByte、Byte、Short、UShort、Integer、UInteger、Long 或 ULong)。
amount
必選。數(shù)值表達(dá)式。要將該位模式移位的位數(shù)。數(shù)據(jù)類型必須為 Integer 或擴(kuò)展到 Integer。
備注
數(shù)學(xué)移位不是循環(huán)的,即不會(huì)將在結(jié)果的一端移出的數(shù)位從另一端重新移入。在數(shù)學(xué)左移位運(yùn)算中,丟棄移出結(jié)果數(shù)據(jù)類型范圍的數(shù)位,而將右端空出的數(shù)位位置設(shè)置為零。
為防止移位的結(jié)果超出它所支持的位數(shù),Visual Basic 使用與 pattern 的數(shù)據(jù)類型相對(duì)應(yīng)的大小掩碼來屏蔽 amount 的值。可使用這些值的二進(jìn)制與運(yùn)算結(jié)果作為移位量。大小掩碼如下所示:
pattern數(shù)據(jù)類型 掩碼(十進(jìn)制)掩碼(十六進(jìn)制)
SByte, Byte 7 H00000007
Short, UShort 15 H0000000F
Integer, UInteger 31 H0000001F
Long, ULong 63 H0000003F
如果 amount 為零,則 result 的值與 pattern 的值相同。如果 amount 為負(fù)值,則將把它作為無符號(hào)的值,并使用相應(yīng)的大小掩碼進(jìn)行屏蔽。
數(shù)學(xué)移位絕不會(huì)產(chǎn)生溢出異常。
'窗體放置Panel1 ,Label1,Timer1控件各一個(gè) Label1置于Panel1中
Dim Label_X As Integer
Dim Label_Y As Integer
Dim Panel_W As Integer
Dim Panel_H As Integer
Dim Label_W As Integer
Dim Label_H As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Panel1.Dock = DockStyle.Fill
Timer1.Start()
Label_X = 0
Label_Y = 0
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Panel_W = Panel1.Width
Panel_H = Panel1.Height
Label_W = Label1.Width
Label_H = Label1.Height
Label1.Location = New Point(Label_X, Label_Y) '設(shè)置控件新坐標(biāo)
If Label_Y = 0 Then
Label_X = Label_X + 5 '5=每次位移距離
End If
If Label_X = Panel_W - Label_W Then
Label_Y = Label_Y + 5
End If
If Label_Y = Panel_W - Label_W Then
Label_X = Label_X - 5
End If
If Label_X = 0 Then
Label_Y = Label_Y - 5
End If
End Sub