Servus,
Ich brauche eure Hilfe bei einem kleinen Rechenproblem: Ich brauche eine StructureUnion, die aus folgendem besteht:
Ein Array mit Byte-Groesse (Byte[0..3])
Ein Array aus Binary-Groessen (Binary[0..31])
Einer Variable mit 32 bit Groesse (Integer)
Die Integer- und die Binary-Groesse ist kein Problem, aber welcher Variablentyp bitte ist nur einen Bit gross? Gibt es einen derartigen Variablentyp in PureBasic ueberhaupt?
Binaer arbeiten
Re: Binaer arbeiten
Nein es gibt keinen Bit-Typen ...
Das kleinste ist Byte (8Bit)
Von dort aus musst du dich mit Bit-Operatoren "tiefer kämpfen"
Das kleinste ist Byte (8Bit)
Von dort aus musst du dich mit Bit-Operatoren "tiefer kämpfen"
Code: Alles auswählen
Macro SetBit(Value, Bit, State)
( (Value) & ~(1<<(Bit)) | (State)<<(Bit) )
EndMacro
Macro GetBit(Value, Bit)
( (Value)>>(Bit) & 1 )
EndMacro
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Binaer arbeiten
Das ist schon etwas zu hoch. Kannst du mir dazu sagen, was du mit diesen Operationen genau tust?
Re: Binaer arbeiten
Mit diesen Operationen kannst du Bits setzen und lesen.
Da du kan nicht über ein ArrayFeld auf die Bits in einem Integer zugreifen kannst, wären die Macros ein möglicher Weg:
Da du kan nicht über ein ArrayFeld auf die Bits in einem Integer zugreifen kannst, wären die Macros ein möglicher Weg:
Code: Alles auswählen
Macro SetBit(Value, Bit, State)
( (Value) & ~(1<<(Bit)) | (State)<<(Bit) )
EndMacro
Macro GetBit(Value, Bit)
( (Value)>>(Bit) & 1 )
EndMacro
Integer = 20
Debug Bin(Integer)
For Bit = 0 To 6
Debug GetBit(Integer, Bit)
Next
Integer = SetBit(Integer, 0, 1)
Integer = SetBit(Integer, 4, 0)
Debug Integer
Debug Bin(Integer)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr

