重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
注意只能對整型執行按位運算。浮點值必須轉換為整型后,才能執行按位運算。按位運算采用二進制(以 2 為基)形式計算兩個整數值。它們比較對應位置上的位,然后基于比較的結果賦值。下面的示例演示了 And 運算符。復制Dim x As Integerx = 3 And 5 前面的示例將 x 的值設置為 1。發生這種情況的原因如下:這些值以二進制形式處理:二進制格式的 3 為 011二進制格式的 5 為 101And 運算符比較這些二進制表示方式,一次比較一個二進制位置(位)。如果給定位置的兩個位都為 1,則將 1 放在結果中的該位置。如果任何一個位是 0,則將 0 放在結果中的該位置。在前面的示例中,按如下所示計算結果:011(二進制格式的 3)101(二進制格式的 5)001(二進制格式的計算結果)計算結果以十進制形式處理。值 001 是 1 的二進制表示形式,因此 x = 1。除了在任何一個比較位是 1 或兩個比較位都是 1 的情況下將 1 賦予結果位以外,按位 Or 運算與此類似。Xor 在比較的位正好只有一個是 1(而不是兩者都是 1)時將 1 賦給結果位。Not 采用單個操作數并反轉所有位(包括符號位),然后將該值賦予結果。這意味著,對于有符號正數,Not 始終返回負值,而對于負數,Not 始終返回正值或零。AndAlso 和OrElse 運算符不支持按位運算。 追問: 好復雜啊...還是不會,還有整數怎么轉換為二進制數? 回答: 為什么一定要用位運算呢,你那個乘法只能通過左移操作符“ ”來進行,而左移一次代表乘以2,要是乘以一個小數,就必須先化成2的n次方,不夠再用加減法調整,很麻煩啊,沒必要用位運算啊。。。 追問: 因為我要進行大量的運算,但速度要快,所有用位運算...我也不想啊.. 回答: 那就不該用VB 啊,c/c++在執行效率上是沒話說的。 追問: 問題就是不會嘛... 回答: 那你上csdn上發帖效果應該不錯 追問: CSDN發了,我發在高性能運算,沒人... 回答: 耐心一些,或者你應該發到VB.NET論壇那里。。。 追問: 額..只能這樣了... 提問者 的感言: 太復雜了..算了 2010-11-08
創新互聯建站是一家專業提供汾陽企業網站建設,專注與成都網站建設、成都網站設計、H5頁面制作、小程序制作等業務。10年已為汾陽眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。
'容易,用api,查一查SetBitmapBits
'新建工程,增加一個 command button , 一個 picture box , 將圖片加載到 picture box.
'將代碼粘貼到 Form1
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Dim PicBits() As Byte, PicInfo As BITMAP, Cnt As Long
Private Sub Command1_Click()
'Get information (such as height and width) about the picturebox
GetObject Picture1.Image, Len(PicInfo), PicInfo
'reallocate storage space
ReDim PicBits(1 To PicInfo.bmWidth * PicInfo.bmHeight * 3) As Byte
'Copy the bitmapbits to the array
GetBitmapBits Picture1.Image, UBound(PicBits), PicBits(1)
'Invert the bits
For Cnt = 1 To UBound(PicBits)
PicBits(Cnt) = 255 - PicBits(Cnt)
Next Cnt
'Set the bits back to the picture
SetBitmapBits Picture1.Image, UBound(PicBits), PicBits(1)
'refresh
Picture1.Refresh
End Sub
改成:
For i As Integer = 0 To buffer.Length - 1
checksum = checksum Xor Asc(buffer(i))
Next
xor表示雙重作用,
textstyle = textstyle Xor FontStyle.Italic
就是說,在原來的基礎上實現雙重功能結合,比如你原來的字體是 加粗的,在運行這句語句后,就實驗了加粗和傾斜的功能了,如果不用xor,實現就很麻煩了