RotateRightI – Rotate an Integer to the right

' Rotate an Integer to the right the specified number of times'' NOTE: requires Power2()Function RotateRightI(ByVal value As Integer, ByVal times As Long) As Integer    Dim i As Long, signBits As Integer        ' no need to rotate more times than required    times = times Mod 16    ' return the number if it's a multiple of 16    If times = 0 Then RotateRightI = value: Exit Function        For i = 1 To times        ' remember the sign bit and bit 0        signBits = value And &H8001        ' clear those bits and shift to the right by one position        value = (value And &H7FFE)  2        ' if the number was negative, then re-insert the bit        ' if bit 0 was set, then set the sign bit        value = value Or ((signBits < 0) And &H4000) Or (CBool(signBits And 1) _            And &H8000)    Next    RotateRightI = valueEnd Function

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: