注意只能對(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)算。 追問(wèn): 好復(fù)雜啊...還是不會(huì),還有整數(shù)怎么轉(zhuǎn)換為二進(jìn)制數(shù)? 回答: 為什么一定要用位運(yùn)算呢,你那個(gè)乘法只能通過(guò)左移操作符“
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),潁泉企業(yè)網(wǎng)站建設(shè),潁泉品牌網(wǎng)站建設(shè),網(wǎng)站定制,潁泉網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,潁泉網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1左移10位,1后面加10個(gè)0
結(jié)果就是:10000000000
五、按位運(yùn)算符
注意不能在VB.Net中直接使用以下二進(jìn)制數(shù),使用時(shí)需轉(zhuǎn)換為相應(yīng)的十六或十進(jìn)制數(shù)字。
1. 表示按位左移,空缺處補(bǔ)0。如:101101 2 結(jié)果為 110100
2. 表示按位右移,如:101101 2 結(jié)果為 001011
AndAlso是短路的邏輯與運(yùn)算符,And有兩個(gè)含義:非短路的邏輯與運(yùn)算符;按位與運(yùn)算符
Dim c=a AndAlso b表達(dá)式中,若表達(dá)式a的計(jì)算結(jié)果是False,無(wú)論表達(dá)式b是什么樣,都不再進(jìn)行計(jì)算,直接返回c的值
Dim c=a And b表達(dá)式中,無(wú)論a和b是怎樣的表達(dá)式,都要全部計(jì)算完成后再返回c的值
AndAlso相比And的區(qū)別,除了性能優(yōu)勢(shì)外,更重要的是,從語(yǔ)義上來(lái)說(shuō)
If a Then
If b Then
End If
End If
等價(jià)于If a AndAlso b Then而不等價(jià)于If a And b Then
考慮這種情況:
Dim m As ClassM=****
Dim c=m IsNot Nothing AndAlso m.Succeeded
這種實(shí)際編程中經(jīng)常遇到的判斷,如果把AndAlso替換成And,在m Is Nothing的情況下會(huì)引發(fā)NullReferenceException空引用異常,而AndAlso能確保不會(huì)引發(fā)空引用異常
進(jìn)行邏輯運(yùn)算的時(shí)候,And只在一種情況下有價(jià)值:不僅想要得到c的值,而且無(wú)論如何都希望執(zhí)行b過(guò)程,并且自己能確保a=False不會(huì)影響b的執(zhí)行。其他情況下務(wù)必使用AndAlso
OrElse和Or同理,作為上面那句的逆判斷
Dim c=m Is Nothing OrElse m.Failed
也是經(jīng)常使用的。當(dāng)然在進(jìn)行位運(yùn)算時(shí),只能用And和Or,AndAlso和OrElse沒(méi)有位運(yùn)算功能
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)算符~
不過(guò)可以通過(guò)"自定義運(yùn)算符"來(lái)寫出我們想要的功能
邏輯運(yùn)算符中所含的And 運(yùn)算符,Eqv 運(yùn)算符,Imp 運(yùn)算符,Not 運(yùn)算符,Or 運(yùn)算符,Xor 運(yùn)算符等均可用來(lái)實(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é)果通過(guò)下表說(shuō)明:
詳細(xì)的參考:MSDN6.0關(guān)于運(yùn)算符的介紹。
vb6.0中也有,
數(shù)字 就是讓這個(gè)數(shù)字為long型(隱式聲明Long 數(shù)據(jù)類型)
這就顯然是令數(shù)字0為long型的意思
如果不加就會(huì)默認(rèn)是integer型
有很多作用
c=a b 就是把a(bǔ)和b以字符串形式連接起來(lái)并賦給c
如果只是要將其它類型數(shù)據(jù)轉(zhuǎn)換為字符串只要用cstr(變量)就行了
dim x 在定義的時(shí)候就是把變量x定義為long型,就像 dim x as long 一樣的效果
H十六進(jìn)制數(shù) 的H表示后面的是十六進(jìn)制數(shù),還有O是表示后面的是八進(jìn)制數(shù)
VB中不能用。
VB也可以按位與運(yùn)算的。
x=15 and 8的值就是8。
VB中的And可以表示按位與,也可以表示邏輯與,就看參與運(yùn)算的量是什么類型的了。