请问VB中怎么能向右循环一位

请问VB中怎么能向右循环一位,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

请问VB中怎么能向右循环一位,谢谢了

解析:

ithack/doc16415

VB程序中实现字节移位 *** 作

在利用VB系统开发数据采集或工业控制软件,或对文件进行低级 *** 作时,常需要对字节进行移位 *** 作,但VB系统中没有提供字节移位 *** 作的指令和函数,只提供了And(与)、Or(或)、Xor(异或)、Equ(同或)、Not(非)等几个逻辑运算指令。笔者在用VB系统开发工业控制软件的过程中,就遇到了这个问题,于是利用VB中已有的逻辑运算指令,模拟汇编语言的字节移位指令,编制了七个字节移位函数:逻辑左移、逻辑右移、算术右移、循环左移、循环右移、进位循环左移和进位循环右移。

在汇编语言指令中,逻辑左移的功能相当于乘2, 逻辑右移的功能相当于除2,利用这个特性,在VB程序中用乘2和除2方法实现位的左移和右移,然后再用And(与)和Or(或)逻辑运算指令,判断移位过程中是否有进位发生,将进行标志置位。

程序清单

CF是进位标志,采用Boolean类型逻辑变量,如果CF为True表示有进位,为False则表示无进位。

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

结束语

以上七个字节移位 *** 作函数的功能和用法同宏汇编语言的移位 *** 作指令基本相同,不过只对单字节进行 *** 作,但上述程序稍加改动后,就可对双字节Integer类型和四字节Long类型进行移位 *** 作。

vb程序中,变量是指该量在程序执行的整个过程中其值是可以改变的,但在运行的每一个瞬间每一个具体的运算过程中,它的值都是确定的.

在程序运行过程中,对程序中变量按其所分配相应的内存单元来存储数据.在程序执行过程中,变量值的变化说白了就是与此变量相对应的内存单元内容的变化.

----------------------------------------

上面那段话是我引用的,在我理解变量就相当是电脑硬件中的内存粗昌核,用来存储你在程序中需要的一些数据,以便调用.我觉得你买本书,找几个变量的简单例子做一做就应该会明白了,毕迅差竟变量是编程中最基本的元素.希望你岩掘早日找到答案~~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12361754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存