注意只能對整型執(zhí)行按位運算。浮點值必須轉(zhuǎn)換為整型后,才能執(zhí)行按位運算。按位運算采用二進制(以 2 為基)形式計算兩個整數(shù)值。它們比較對應(yīng)位置上的位,然后基于比較的結(jié)果賦值。下面的示例演示了 And 運算符。復(fù)制Dim x As Integerx = 3 And 5 前面的示例將 x 的值設(shè)置為 1。發(fā)生這種情況的原因如下:這些值以二進制形式處理:二進制格式的 3 為 011二進制格式的 5 為 101And 運算符比較這些二進制表示方式,一次比較一個二進制位置(位)。如果給定位置的兩個位都為 1,則將 1 放在結(jié)果中的該位置。如果任何一個位是 0,則將 0 放在結(jié)果中的該位置。在前面的示例中,按如下所示計算結(jié)果:011(二進制格式的 3)101(二進制格式的 5)001(二進制格式的計算結(jié)果)計算結(jié)果以十進制形式處理。值 001 是 1 的二進制表示形式,因此 x = 1。除了在任何一個比較位是 1 或兩個比較位都是 1 的情況下將 1 賦予結(jié)果位以外,按位 Or 運算與此類似。Xor 在比較的位正好只有一個是 1(而不是兩者都是 1)時將 1 賦給結(jié)果位。Not 采用單個操作數(shù)并反轉(zhuǎn)所有位(包括符號位),然后將該值賦予結(jié)果。這意味著,對于有符號正數(shù),Not 始終返回負(fù)值,而對于負(fù)數(shù),Not 始終返回正值或零。AndAlso 和OrElse 運算符不支持按位運算。 追問: 好復(fù)雜啊...還是不會,還有整數(shù)怎么轉(zhuǎn)換為二進制數(shù)? 回答: 為什么一定要用位運算呢,你那個乘法只能通過左移操作符“
成都創(chuàng)新互聯(lián)主營魯山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),魯山h5小程序定制開發(fā)搭建,魯山網(wǎ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運算符~
不過可以通過"自定義運算符"來寫出我們想要的功能
邏輯運算符中所含的And 運算符,Eqv 運算符,Imp 運算符,Not 運算符,Or 運算符,Xor 運算符等均可用來實現(xiàn)位運算。
算術(shù)運算符的* 運算符,\ 運算符可用于左移和右移位運算。
And 運算符,還對兩個數(shù)值表達式中位置相同的位進行逐位比較,并根據(jù)下表對 result 中相應(yīng)的位進行設(shè)置:
Or 運算符,對兩個數(shù)值表達式中位置相同的位進行逐位比較,并根據(jù)下表對 result 中相應(yīng)的位進行設(shè)置:
Xor 運算符既可作為邏輯運算符,也可作為位運算符。使用互斥或的邏輯進行的兩個表達式的逐位比較,其結(jié)果通過下表說明:
詳細(xì)的參考:MSDN6.0關(guān)于運算符的介紹。
我其實說的就是.net 位移運算符 這倆,沒有所謂的位移等于 = =
VB賦值運算符中沒有 你寫的 只有+=,-=,/=,*=.^=,=這幾個
比較運算符中也沒有,只有=,= 這倆
所以你的問題,無法回答
對位模式執(zhí)行數(shù)學(xué)左移位。
result = pattern amount
各部分說明
result
必選。整型數(shù)值。對該位模式進行移位的結(jié)果。數(shù)據(jù)類型與 pattern 的數(shù)據(jù)類型相同。
pattern
必選。整型數(shù)值表達式。要進行移位的位模式。數(shù)據(jù)類型必須為整型(SByte、Byte、Short、UShort、Integer、UInteger、Long 或 ULong)。
amount
必選。數(shù)值表達式。要將該位模式移位的位數(shù)。數(shù)據(jù)類型必須為 Integer 或擴展到 Integer。
備注
數(shù)學(xué)移位不是循環(huán)的,即不會將在結(jié)果的一端移出的數(shù)位從另一端重新移入。在數(shù)學(xué)左移位運算中,丟棄移出結(jié)果數(shù)據(jù)類型范圍的數(shù)位,而將右端空出的數(shù)位位置設(shè)置為零。
為防止移位的結(jié)果超出它所支持的位數(shù),Visual Basic 使用與 pattern 的數(shù)據(jù)類型相對應(yīng)的大小掩碼來屏蔽 amount 的值??墒褂眠@些值的二進制與運算結(jié)果作為移位量。大小掩碼如下所示:
pattern數(shù)據(jù)類型 掩碼(十進制)掩碼(十六進制)
SByte, Byte 7 H00000007
Short, UShort 15 H0000000F
Integer, UInteger 31 H0000001F
Long, ULong 63 H0000003F
如果 amount 為零,則 result 的值與 pattern 的值相同。如果 amount 為負(fù)值,則將把它作為無符號的值,并使用相應(yīng)的大小掩碼進行屏蔽。
數(shù)學(xué)移位絕不會產(chǎn)生溢出異常。
'窗體放置Panel1 ,Label1,Timer1控件各一個 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
網(wǎng)頁題目:vb.net位移運算 c#位運算移位
文章起源:http://muchs.cn/article10/docoggo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、電子商務(wù)、網(wǎng)站策劃、網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)