Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB4, VB5, VB6 | 20.07.04 |
Binäre Funktionen... Funktionen rund um Binäre Zahlen / Werte | ||
Autor: David Horch | Bewertung: | Views: 20.083 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Es ist mal ganz interessant zu sehen, welchen binären (dualen) Wert eine Zahl hat.
Nachfolgende Funktionen rechnen
- den binären Wert eines Bytes (8 bit) in eine 8-stellige Zeichenfolge um
- den binären Wert einer Integerzahl (16bit) in eine 16-stellige Zeichenfolge um
- den binären Wert einer Long-Zahl (32bit) in eine 32-stellige Zeichenfolge um
- den dezimalen Wert einer 8-stelligen Zeichenfolge (1/0) in ein Byte um.
Die Funktionen groß zu erklären ist, glaube ich, ist nicht so wichtig
' binären Wert eines Bytes in ' eine 8-stellige Zeichenfolge umwandeln Function Bits(ByVal Value As Byte) As String Dim strOut As String Dim i As Long For i = 1 To 8 ' 8 bits strOut = strOut & (Value And 1) Value = Value \ 2 ' Integerdivision Next i Bits = StrReverse(strOut) End Function
' binären Wert einer Integerzahl in ' eine 16-stellige Zeichenfolge umwandeln Function BitsInt(ByVal Value As Integer) As String Dim strOut As String Dim negValue As Integer Dim i As Long If Value < 0 Then negValue = Value Value = Value Xor &H8000 End If For i = 1 To 16 strOut = strOut & (Value And 1) Value = Value \ 2 Next i If negValue Then Mid$(strOut, 16) = 1 BitsInt = StrReverse(strOut) End Function
' binären Wert einer Long-Zahl in ' eine 32-stellige Zeichenfolge umwandeln Function BitsLng(ByVal Value As Long) As String Dim strOut As String Dim negValue As Long Dim i As Long If Value < 0 Then negValue = Value Value = Value Xor &H80000000 End If For i = 1 To 32 strOut = strOut & (Value And 1) Value = Value \ 2 Next i If negValue Then Mid$(strOut, 32) = 1 BitsLng = StrReverse(strOut) End Function
' Dezimal-Wert einer 8-stelligen Zeichenfolge ' in ein Byte umwandeln Function BitsToByte(ByVal Bits As String) As Byte Dim Out As Byte Dim x As Byte Dim i As Long If Len(Bits) > 8 Then Err.Raise 6, , "Der Bitstring darf höchstens 8 Zeichen (0 oder 1) enthalten!" & _ Chr(13) & "(""" & Bits & """)" End If If Len(Bits) < 8 Then Bits = String(8 - Len(Bits), "0") & Bits Bits = StrReverse(Bits) For i = 0 To 7 x = Mid$(Bits, i + 1, 1) Out = Out + x * 2 ^ i Next i BitsToByte = Out End Function