程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用VB進行移位操作

用VB進行移位操作

編輯:VB綜合教程
VB沒有提供移位操作的指令和函數,只提供and(與)、or(或)、xor(異或)、eqv(同或)、not(非)等幾個運算符,而編程時有時需要對一個字節進行移位操作(如進行加密),怎麼辦?其實只用and、or二個運算符即可搞掂。例如要將變量byte1的第八位置1(假設byte1的二進制值為01001101),則只需byte1or&h80(即01001101or10000000),如要將第八位置0,則只需byte1and&h7f。請看下面程序段是如何實現循
  環左移的:
  
  PublicFunctionbyteleft(byte1AsByte,nAsInteger)AsByte`將byte1左移n位
  DimintemAsByte`臨時變量
  Dimintem1AsByte`臨時變量
  Dimx,yAsInteger
  intem1=byte1
  Forx=1Ton`移多少位就循環多少次
  Fory=8To1Step-1`從第八位(左邊第一位)開始循環左移
  SelectCasey
  Case8
  If(intem1And&H80)=&H80Then`如果臨時變量intem1的第八位是1,
  intem=&H1`則將臨時變量intem置1,
  Else
  intem=&H0`反之置0
  EndIf
  Case7
  If(intem1And&H40)=&H40Then`如果臨時變量intem1的第七位是1,
  intem1=intem1Or&H80`則將其第八位置1(其它位不變),
  Else
  intem1=intem1And&H7F`反之將第八位置0(其它位不變)
  EndIf
  Case6
  If(intem1And&H20)=&H20Then`操作與上面相同
  intem1=intem1Or&H40
  Else
  intem1=intem1And&HBF
  EndIf
  Case5
  If(intem1And&H10)=&H10Then
  intem1=intem1Or&H20
  Else
  intem1=intem1And&HDF
  EndIf
  Case4
  If(intem1And&H8)=&H8Then
  intem1=intem1Or&H10
  Else
  intem1=intem1And&HEF
  EndIf
  Case3
  If(intem1And&H4)=&H4Then
  intem1=intem1Or&H8
  Else
  intem1=intem1And&HF7
  EndIf
  Case2
  If(intem1And&H2)=&H2Then
  intem1=intem1Or&H4
  Else
  intem1=intem1And&HFB
  EndIf
  Case1
  If(intem1And&H1)=&H1Then
  intem1=intem1Or&H2
  Else
  intem1=intem1And&HFD
  EndIf
  Ifintem=&H1Then`移完第一位後,如果intem是1(即第八位是1)
  intem1=intem1Or&H1`則將intem1的第一位置1
  Else
  intem1=intem1And&HFE`反之置0
  EndIf
  EndSelect
  Nexty
  Nextx
  byteleft=intem1`將intem1的值返回給函數名
  EndFunction
  參照此程序段,不難實現循環右移。
  (此程序段在VB5上調試通過。)
  ->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved