日本ab视频-日本ab在线-日本a黄-日本a黄色片-国产亚洲精品第一综合linode-国产亚洲精品高清在线

新聞資訊
VB程序中實現字節移位操作 按位左移 右移
2011-08-27


VB程序中實現字節移位操作 VB程序中實現字節移位操作 按位左移 右移

在利用VB系統開發數據采集或工業控制軟件,或對文件進行低級操作時,常需要對字節進行移位操作,但VB系統中沒有提供字節移位操作的指令和函數,只提供了And(與)、Or(或)、Xor(異或)、Equ(同或)、Not(非)等幾個邏輯運算指令。筆者在用VB系統開發工業控制軟件的過程中,就遇到了這個問題,于是利用VB中已有的邏輯運算指令,模擬匯編語言的字節移位指令,編制了七個字節移位函數:邏輯左移、邏輯右移、算術右移、循環左移、循環右移、進位循環左移和進位循環右移。


在匯編語言指令中,邏輯左移的功能相當于乘2, 邏輯右移的功能相當于除2,利用這個特性,在VB程序中用乘2和除2方法實現位的左移和右移,然后再用And(與)和Or(或)邏輯運算指令,判斷移位過程中是否有進位發生,將進行標志置位。 


程序清單

CF是進位標志,采用Boolean類型邏輯變量,如果CF為True表示有進位,為False則表示無進位。


[code]
Public CF As Boolean   '進位標志



'1.邏輯左移



Public Function SHL(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

BD = OPR

For i = 1 To n - 1

BD = (BD And &H7F) * 2 '將D7位屏蔽左移,防止字節溢出

Next i

CF = BD And &H80 '判斷D7位是否進位

SHL = (BD And &H7F) * 2

End Function



'2.邏輯右移



Public Function SHR(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

BD = OPR

For i = 1 To n - 1

BD = BD \ 2 '右移

Next i

CF = BD And 1 '判斷D0位是否進位

SHR = BD \ 2

End Function



'3.算術右移



Public Function SAR(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

Dim Fg1 As Byte

BD = OPR

Fg1 = BD And &H80

For i = 1 To n - 1

BD = BD \ 2 '右移

Next i

CF = BD And 1 '判斷D0位是否進位

BD = BD \ 2 '右移

SAR = BD Or Fg1

End Function



'4.循環左移



Public Function ROL(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

Dim Fg1 As Byte

BD = OPR

For i = 1 To n

Fg1 = (BD And &H80) \ 128 '判斷D7位是否進位

BD = ((BD And &H7F) * 2) Or Fg1 '帶進位左移

Next i

CF = Fg1

ROL = BD

End Function



'5.循環右移



Public Function ROR(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

Dim Fg1 As Byte

Dim Fg2 As Byte

BD = OPR

For i = 1 To n

Fg1 = (BD And 1) * 128 '判斷D0位是否進位

BD = (BD \ 2) Or Fg1 '帶進位右移

Next i

CF = Fg1

ROR = BD

End Function



'6.進位循環左移



Public Function RCL(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

Dim Fg1 As Byte

Dim Fg2 As Byte

BD = OPR

Fg2 = CF And 1

For i = 1 To n

Fg1 = (BD And &H80) \ 128 '判斷D7位是否進位

BD = ((BD And &H7F) * 2) Or Fg2 '帶進位左移

Fg2 = Fg1

Next i

CF = Fg1

RCL = BD

End Function



'7.進位循環右移



Public Function RCR(OPR As Byte, n As Integer) As Byte

Dim BD As Byte

Dim I As Integer

Dim Fg1 As Byte

Dim Fg2 As Byte

BD = OPR

Fg2 = CF And 128

For i = 1 To n

Fg1 = (BD And 1) * 128 '判斷D0位是否進位

BD = (BD \ 2) Or Fg2 '帶進位右移

Fg2 = Fg1

Next i

CF = Fg1

RCR = BD

End Function
[/code]


結束語

以上七個字節移位操作函數的功能和用法同宏匯編語言的移位操作指令基本相同,不過只對單字節進行操作,但上述程序稍加改動后,就可對雙字節Integer類型和四字節Long類型進行移位操作。

關注有人微信公眾號
了解更多信息

主站蜘蛛池模板: 99久久综合 | 青青草国产精品免费 | 99久久中文字幕伊人情人 | 亚洲一区综合在线播放 | 又粗又硬又爽的三级视频 | 老鸡视频91 | 97视频免费看 | 亚洲不卡av不卡一区二区 | 欧洲做视频在线观看 | 天天插天天操天天干 | 成人欧美一区二区三区黑人免费 | 免费人成网 | 极品美女在线播放 | 婷婷丁香在线视频 | 亚洲一区日韩二区欧美三区 | 青青青激情视频在线最新 | 国内精品视频在线播放一区 | 欧美成人免费观看的 | 欧美在线播放成人a | 日本一区二区三区不卡在线视频 | 福利 网红 精品 免费 高清 | 久久.com| 成人精品第一区二区三区 | 亚洲视频在线免费 | 五月婷婷激情视频 | 免费欧洲毛片a级视频老妇女 | h网站亚洲| 亚洲 欧洲 另类 综合 自拍 | 在线亚洲激情 | 自拍偷拍第4页 | 日日摸夜夜添夜夜添日韩 | 男人天堂第七色 | 一区亚洲 | 欧美成人午夜视频 | www一片黄 | 免费看日本羞羞视频 | 日日日射射射 | 日韩精品在线播放 | 欧洲女人性行为免费视频 | 网红主播大尺度精品福利视频 | eeuss影院www免费 |