VBScript でビットシフト演算する (unibon)
1999年07月26日: 新規作成(推定)。
VBScript でビットシフト演算をします。
あふれにも対処しています。Long 型(32 ビット)の精度を持ちます。
関数 BitShift の第1引数(1から数えて)に、ビットシフトの対象となる値、第2引数(1から数えて)に、シフト幅を指定します。シフト幅は正がいわゆる左シフト、負が右シフトになります。
VB や VBA でも使えます。
Function BinToDec(ByVal x)
Dim a
a = 1
Dim y
y = "" 'いわゆるリトルエンディアンなので注意
Dim i
For i = 0 To &H20 - 1
If x And a Then
y = y & "1"
Else
y = y & " "
End If
If i < &H20 - 1 - 1 Then
a = a * 2
Else
a = &H80000000 'オーバフロー対策
End If
Next
BinToDec = y
End Function
Function DecToBin(ByVal x)
Dim a
a = 1
Dim y
y = 0
Dim i
For i = 0 To &H20 - 1
If Mid(x, i + 1, 1) <> " " Then
y = y Or a
End If
If i < &H20 - 1 - 1 Then
a = a * 2
Else
a = &H80000000 'オーバフロー対策
End If
Next
DecToBin = y
End Function
Function BitShift(ByVal x, ByVal s)
Dim y
y = BinToDec(x)
Dim z
If s >= 0 Then
z = Space(s) & Mid(y, 1, &H20 - s)
Else
z = Mid(y, (-s) + 1) & Space(-s)
End If
Dim r
r = DecToBin(z)
BitShift = r
End Function
ASP の目次
ホーム
(このページ自身の絶対的な URL)