一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VB程序中實(shí)現(xiàn)字節(jié)移位操作

 trgal 2010-10-22
VB程序中實(shí)現(xiàn)字節(jié)移位操作

在利用VB系統(tǒng)開(kāi)發(fā)數(shù)據(jù)采集或工業(yè)控制軟件,或?qū)ξ募M(jìn)行低級(jí)操作時(shí),常需要對(duì)字節(jié)進(jìn)行移位操作,但VB系統(tǒng)中沒(méi)有提供字節(jié)移位操作的指令和函數(shù),只提供了And(與)、Or(或)、Xor(異或)、Equ(同或)、Not(非)等幾個(gè)邏輯運(yùn)算指令。筆者在用VB系統(tǒng)開(kāi)發(fā)工業(yè)控制軟件的過(guò)程中,就遇到了這個(gè)問(wèn)題,于是利用VB中已有的邏輯運(yùn)算指令,模擬匯編語(yǔ)言的字節(jié)移位指令,編制了七個(gè)字節(jié)移位函數(shù):邏輯左移、邏輯右移、算術(shù)右移、循環(huán)左移、循環(huán)右移、進(jìn)位循環(huán)左移和進(jìn)位循環(huán)右移。

在匯編語(yǔ)言指令中,邏輯左移的功能相當(dāng)于乘2, 邏輯右移的功能相當(dāng)于除2,利用這個(gè)特性,在VB程序中用乘2和除2方法實(shí)現(xiàn)位的左移和右移,然后再用And(與)和Or(或)邏輯運(yùn)算指令,判斷移位過(guò)程中是否有進(jìn)位發(fā)生,將進(jìn)行標(biāo)志置位。

程序清單
CF是進(jìn)位標(biāo)志,采用Boolean類型邏輯變量,如果CF為T(mén)rue表示有進(jìn)位,為False則表示無(wú)進(jìn)位。

Public CF As Boolean   '進(jìn)位標(biāo)志

'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位屏蔽左移,防止字節(jié)溢出
Next i
CF = BD And &H80 '判斷D7位是否進(jìn)位
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位是否進(jìn)位
SHR = BD \ 2
End Function

'3.算術(shù)右移

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位是否進(jìn)位
BD = BD \ 2 '右移
SAR = BD Or Fg1
End Function

'4.循環(huán)左移

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位是否進(jìn)位
BD = ((BD And &H7F) * 2) Or Fg1 '帶進(jìn)位左移
Next i
CF = Fg1
ROL = BD
End Function

'5.循環(huán)右移

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位是否進(jìn)位
BD = (BD \ 2) Or Fg1 '帶進(jìn)位右移
Next i
CF = Fg1
ROR = BD
End Function

'6.進(jìn)位循環(huán)左移

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位是否進(jìn)位
BD = ((BD And &H7F) * 2) Or Fg2 '帶進(jìn)位左移
Fg2 = Fg1
Next i
CF = Fg1
RCL = BD
End Function

'7.進(jìn)位循環(huán)右移

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位是否進(jìn)位
BD = (BD \ 2) Or Fg2 '帶進(jìn)位右移
Fg2 = Fg1
Next i
CF = Fg1
RCR = BD
End Function

結(jié)束語(yǔ)
以上七個(gè)字節(jié)移位操作函數(shù)的功能和用法同宏匯編語(yǔ)言的移位操作指令基本相同,不過(guò)只對(duì)單字節(jié)進(jìn)行操作,但上述程序稍加改動(dòng)后,就可對(duì)雙字節(jié)Integer類型和四字節(jié)Long類型進(jìn)行移位操作。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    黑丝国产精品一区二区| 亚洲中文字幕高清乱码毛片| 国产欧美日韩一级小黄片| 精品久久综合日本欧美| 日本熟妇五十一区二区三区| 亚洲第一区欧美日韩在线| 中字幕一区二区三区久久蜜桃| 欧美小黄片在线一级观看| 男女一进一出午夜视频| 国内午夜精品视频在线观看| 日韩18一区二区三区| 亚洲中文字幕免费人妻| 国产精品白丝久久av| 国产又粗又硬又大又爽的视频| 免费精品国产日韩热久久| 日韩人妻av中文字幕| 麻豆国产精品一区二区三区| 日韩中文字幕狠狠人妻| 日本少妇中文字幕不卡视频| 亚洲乱妇熟女爽的高潮片| 日本道播放一区二区三区| 国产极品粉嫩尤物一区二区| 久久精品视频就在久久| 日韩成人中文字幕在线一区| 日韩丝袜诱惑一区二区| 久久人妻人人澡人人妻| 欧美日韩国产综合特黄| 狠色婷婷久久一区二区三区| 成人精品网一区二区三区| 国产又粗又爽又猛又黄的| 好吊一区二区三区在线看| 国产一区二区三区四区中文| 欧美国产极品一区二区| 欧美乱妇日本乱码特黄大片 | 欧美精品亚洲精品一区| 日韩一区二区三区观看| 亚洲超碰成人天堂涩涩| 美女黄色三级深夜福利| 91亚洲熟女少妇在线观看| 国产又色又爽又黄的精品视频| 亚洲另类女同一二三区|