Einzelne Bits lesen & schreiben

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Olaf
Beiträge: 117
Registriert: 20.04.2006 14:51
Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
Kontaktdaten:

Einzelne Bits lesen & schreiben

Beitrag von Olaf »

Hier mal noch ne kleine Prozedur zum lesen/schreiben einzelner Bits aus einem Byte:

Code: Alles auswählen

;Nummerierung der Bits "von hinten nach vorne"
;Bit0:Wert 1
;Bit1:Wert 2
;...
;Bit7:Wert 128
EnableExplicit
Procedure ReadOutBit(ByteMemoryID,Bit)
	If PeekQ(ByteMemoryID) & Int(Pow(2,Bit))
		ProcedureReturn 1
	Else
		ProcedureReturn 0
	EndIf
EndProcedure

Procedure WriteInBit(ByteMemoryID,Bit,Value)
	If Value=0
		PokeB(ByteMemoryID,PeekB(ByteMemoryID)&~Int(Pow(2,Bit)))
	ElseIf Value=1
		PokeB(ByteMemoryID,PeekB(ByteMemoryID)|Int(Pow(2,Bit)))
	EndIf
EndProcedure

;Beispiel:
Global Byte.b=16
Debug RSet(Bin(Byte),8,"0")
Debug ReadOutBit(@Byte,4) ;Bit4 auslesen: sollte 1 ergeben
Debug ReadOutBit(@Byte,5) ;Bit5 auslesen: sollte 0 ergeben
Debug ""
WriteInBit(@Byte,0,1) ;Bit0 (1er-Bit) auf 1 setzen
Debug RSet(Bin(Byte),8,"0")
Debug Byte            ;Byte sollte nun den Wert 17 haben
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion." :lol: