1左移10位,1后面加10個0
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、黃南州ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的黃南州網(wǎng)站制作公司
結(jié)果就是:10000000000
五、按位運算符
注意不能在VB.Net中直接使用以下二進制數(shù),使用時需轉(zhuǎn)換為相應(yīng)的十六或十進制數(shù)字。
1. 表示按位左移,空缺處補0。如:101101 2 結(jié)果為 110100
2. 表示按位右移,如:101101 2 結(jié)果為 001011
12601, 轉(zhuǎn)換成16進制是3139,16進制 ASC嗎31對應(yīng)字符1, 39對應(yīng)9。 后面的用這個思路去轉(zhuǎn)換就對上了。
0001 2569這兩個應(yīng)該是和格式相關(guān)的字符。0001一般就是開始的意思。
一個變量包含兩個字符,轉(zhuǎn)換算法如下。
1。 取高位字符,除以H100, H是VB中16進制表示法。 除以H100效果是右移8位。 位了保險起見,再和H00FF做與運算,保證取得的ASC碼是合法的。
2。取低位字符,與H00FF做與運算,去掉高位數(shù)據(jù),剩下的就是低位ASC碼。
3。將ASC碼轉(zhuǎn)換為字符,用CHR函數(shù)即可,然后連接所有的字符即可得String
'VB是沒有移位命令的,但是可以自定義移位函數(shù)。
'位左移??
Public?Function?SHL(nSource?As?Long,?n?As?Byte)?As?Long??
SHL?=?nSource?*?2?^?n??
End?Function??
'位右移??
Public?Function?SHR(nSource?As?Long,?n?As?Byte)?As?Long??
SHR?=?nSource?/?2?^?n??
End?Function??
'獲得指定的位??
Public?Function?GetBits(nSource?As?Long,?n?As?Byte)?As?Boolean??
GetBits?=?nSource?And?2?^?n??
End?Function??
'設(shè)置指定的位??
Public?Function?SetBits(nSource?As?Long,?n?As?Byte)?As?Long??
SetBits?=?nSource?Or?2?^?n??
End?Function??
'清除指定的位??
Public?Function?ResetBits(nSource?As?Long,?n?As?Byte)?As?Long??
ResetBits?=?nSource?And?Not?2?^?n??
End?Function??
'注:以上的所有函數(shù),沒有考慮溢出的問題,請自行添加相關(guān)處理。
見下面代碼,放置定時器,按鈕,標(biāo)簽各一個
Public?Class?Form1
Private?Sub?Timer1_Tick(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Timer1.Tick?'定時器
If?Label1.Right??Me.Width?Then
Label1.Left?+=?10'移動距離
Else
Label1.Left?=?0
End?If
End?Sub
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click?'開啟或者關(guān)閉定時器
Timer1.Interval?=?1000?'1秒
If?Timer1.Enabled?=?False?Then
Timer1.Start()?'開定時器
Else
Timer1.Stop()?'關(guān)定時器
End?If
End?Sub
End?Class
邏輯運算符中所含的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é)果通過下表說明:
詳細的參考:MSDN6.0關(guān)于運算符的介紹。
注意只能對整型執(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 始終返回負值,而對于負數(shù),Not 始終返回正值或零。AndAlso 和OrElse 運算符不支持按位運算。 追問: 好復(fù)雜啊...還是不會,還有整數(shù)怎么轉(zhuǎn)換為二進制數(shù)? 回答: 為什么一定要用位運算呢,你那個乘法只能通過左移操作符“