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

新聞資訊
VB程序中實(shí)現(xiàn)字節(jié)移位操作 按位左移 右移
2011-08-27


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

在利用VB系統(tǒng)開發(fā)數(shù)據(jù)采集或工業(yè)控制軟件,或?qū)ξ募M(jìn)行低級(jí)操作時(shí),常需要對(duì)字節(jié)進(jìn)行移位操作,但VB系統(tǒng)中沒有提供字節(jié)移位操作的指令和函數(shù),只提供了And(與)、Or(或)、Xor(異或)、Equ(同或)、Not(非)等幾個(gè)邏輯運(yùn)算指令。筆者在用VB系統(tǒng)開發(fā)工業(yè)控制軟件的過程中,就遇到了這個(gè)問題,于是利用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)算指令,判斷移位過程中是否有進(jìn)位發(fā)生,將進(jìn)行標(biāo)志置位。 


程序清單

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


[code]
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
[/code]


結(jié)束語(yǔ)

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


關(guān)注有人微信公眾號(hào)
了解更多信息
主站蜘蛛池模板: 亚洲成人在线网 | 四虎影院精品在线观看 | 久久精品导航 | 色综合天天综合网站中国 | 香蕉在线观看视频 | 免费二级片 | h版欧美一区二区三区四区 h版欧美大片免费观看 | 午夜精品久久久久久久四虎 | 日本aaa视频| 很黄很色又爽很黄很色又爽 | 国精品日韩欧美一区二区三区 | 99国产精品九九视频免费看 | 经典三级在线播放线观看 | 在线观看国产日韩 | 狠狠色依依成人婷婷九月 | 国产一区曰韩二区欧美三区 | 麻豆精品视频 在线视频 | 九九热这里只有精品6 | 国产美女极品免费视频 | 弄农村老妇呻吟 | 久久久毛片免费全部播放 | 亚洲国产高清人在线 | 99视屏 | 国产日韩欧美另类 | 四虎入口| 麻豆免费传媒视频在线 | 成人精品视频在线观看完整版 | 91精品天美精东蜜桃传媒入口 | 国产高清在线精品 | 91精品国产高清91久久久久久 | 国产国产伦锂片 | 日本不卡不码高清免费观看 | 日韩免费一区二区 | h里番在线 | 国产成人一区免费观看 | 亚洲国产高清在线精品一区 | 真探秦先生电视剧在线 | 麻豆精品国产免费观看 | 欧美在线不卡 | 岛国大片在线播放免费 | 日韩欧美精品一区二区 |