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ÀàÐͽøÐÐÒÆÎ»²Ù×÷¡£
ÔÚÀûÓÃ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ÀàÐͽøÐÐÒÆÎ»²Ù×÷¡£