LitDev 1.2.15.0 DE Extension API

LD3DView LDArray LDBits LDBlueTooth LDCall
LDChart LDClient LDClipboard LDColours LDCommPort
LDController LDControls LDCursors LDDataBase LDDateTime
LDDebug LDDialogs LDDictionary LDEffect LDEmail
LDEncryption LDEvents LDFastArray LDFastShapes LDFigures
LDFile LDFocus LDftp LDGraph LDGraphicsWindow
LDHID LDImage LDInline LDIOWarrior LDList
LDLogic LDMath LDMathX LDMatrix LDMusic
LDNetwork LDPhysics LDProcess LDQueue LDRegex
LDResources LDScrollBars LDSearch LDServer LDSettings
LDShapes LDShell LDSort LDSound LDSpeech
LDStatistics LDStopwatch LDText LDTextWindow LDTimer
LDTranslate LDUnits LDUtilities LDWaveForm LDWebCam
LDWindows LDxml LDZip

LDBits
Bitweise Logik zum Speichern binärer Flags als Bits in einer einzelnen -/+ Ganzzahl.
Intern wird dazu eine 32 Bit Zahl (Int32, -2147483648 bis 2147483647, -2^31 bis 2^31-1) verwendet.
32. Bit ist Vorzeichenbit (wenn gesetzt -> neg. Ganzzahl als Zweierkomplement).
Vergleichbar mit einem 32-elementigen Array von 1 und 0 Werten, gespeichert als einzelne Zahl.
Die 32 Bits (1 bis 32) werden ab 1 indexiert. Arraywerte (0|1) sind die gesetzten 2er Potenzen von 0 bis 31:
bit1..2^0, bit2..2^1, bit3..2^2, usw.

example http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/
http://graphics.stanford.edu/~seander/bithacks.html


AndBits GetBit GetBits
Not OrBits SetBit
UnsetBit XOrBits

AndBits(var1,var2)
Bitweise And (&, Und) Verkettung zweier Zahlen.
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

var1 Die erste Zahl.
var2 Die zweite Zahl.
returns Die And Zahl (Bit gesetzt, wenn beide Eingabebits gesetzt).
example 1100 (12) And
1010 (10) =
1000 (8)

LDBits.AndBits(255, 15) '15
(FF & 0F = 0F, 11111111 & 00001111 = 00001111)
'n Geradzahl?
LDBits.AndBits(n,1) '0 gerade, 1 ungerade


GetBit(var,bit)
Ermittelt den Wert für ein angegebenes Bit in einer Zahl.
var Die zu überprüfende Zahl.
bit Der Index für das abzufragende Bit (1 bis 32).
returns 0 (ungesetzt) oder 1 (gesetzt).

GetBits(var)
Ermittelt alle Bitwerte einer Zahl als Array.
Info: Die Arrayindizes sind NICHT die 2er Potenzen des Bits, sondern Index-1.

var Die Zahl deren Bits zu ermitteln sind.
returns Die einzelnen Bitwerte (0 oder 1) als 32-elementiger Array (ab 1).
example GetBits(6) ' "1=0;2=1;3=1;4=0;.."
Unteres Halbbyte/Nibble: 0+2^1+2^2+0 = 6


Not(var)
Bitweise Not (~, Nicht) Umkehrung für eine Zahl.
~0 = 1
~1 = 0

var Die umzukehrende Zahl.
returns Die Not Zahl (alle Bits umgekehrt).
example Not 1100 (12) =
..110011 (-13)

LDBits.Not(0) 'gibt -1 (alle Bits gesetzt)


OrBits(var1,var2)
Bitweise Or (|, Oder) Verkettung zweier Zahlen.
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1

var1 Die erste Zahl.
var2 Die zweite Zahl.
returns Die Or Zahl (Bit gesetzt, wenn bereits ein Eingabebit gesetzt).
example 1100 (12) Or
1010 (10) =
1110 (14)

LDBits.OrBits(255, 15) '255
(FF | 0F = FF, 11111111 | 00001111 = 11111111)


SetBit(var,bit)
Setzt ein Bit in einer Zahl (Setzen auf 1).
var Die Zahl in der das Bit gesetzt wird.
bit Der Index für das zu setzende Bit (1 bis 32).
returns Die geänderte Zahl mit neu gesetztem Bit.

UnsetBit(var,bit)
Entfernt ein Bit in einer Zahl (Setzen auf 0).
var Die Zahl von der das Bit entfernt wird.
bit Der Index für das zu entfernende Bit (1 bis 32).
returns Die geänderte Zahl nach entferntem Bit.

XOrBits(var1,var2)
Bitweise XOr (^, eXklusivOder) Verkettung zweier Zahlen.
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

var1 Die erste Zahl.
var2 Die zweite Zahl.
returns Die XOr Zahl (Bit gesetzt, wenn nur ein Eingabebit gesetzt).
example 1100 (12) XOr
1010 (10) =
0110 (6)

LDBits.XOrBits(255, 15) '240
(FF ^ 0F = F0, 11111111 ^ 00001111 = 11110000)