Seite 1 von 3

Bit schreiben / lesen

Verfasst: 14.02.2011 22:32
von Skiller
Hi Folks,

a = %1011 << 1, a ergibt %10110

1.) Wie kann ich z. B. aus der letzten '0' ne '1' machen %1011[0]
2.) Wie kann ich irgendein Bit auslesen? z. B. diese '1' %10[1]10

Danke!

Re: Bit schreiben / lesen

Verfasst: 14.02.2011 22:44
von ts-soft
SetBits usw. findeste alles im CodeArchiv!
Die Syntax ist in jedem Falle noch gültig :mrgreen:

Re: Bit schreiben / lesen

Verfasst: 14.02.2011 22:54
von TomS
ts-soft hat geschrieben:CodeArchiv!
http://www.purearea.net/pb/CodeArchiv/German.html :wink:

Re: Bit schreiben / lesen

Verfasst: 14.02.2011 22:57
von ts-soft
Oder so: http://www.purearea.net/pb/CodeArchiv/M ... SetBits.pb
Aber das wird doch wohl jeder auf seinem Rechner haben.

Re: Bit schreiben / lesen

Verfasst: 15.02.2011 08:19
von Thorium
Dazu muss man bitweise logische Operatoren nutzen.

Am wichtigsten sind & (AND) und | (OR).
Dabei werden 2 Werte bitweise miteinander verglichen und die Bits entsprechend geändert.

Bei AND wird ein Bit gesetzt, falls es in beiden Werten gesetzt ist, ansonsten wird es gelöscht.
Bei OR wird ein Bit gesetzt, wenn es in einem der beiden Werte gesetzt ist, ansonsten wird es gelöscht.

Das kannst du nun verwenden um auf einzelne Bits zuzugreifen. Mit OR kannst du Bits setzen und mit AND kannst du Bits löschen.

Hier ein Beispiel:

Code: Alles auswählen


;Bit 3 setzen
Test = Test | %1000

;testen ob Bit 3 gesetzt ist
If Test & %1000 = %1000
  Debug "Bit 3 ist gesetzt"
Else
  Debug "Bit 3 ist nicht gesetzt"
EndIf

;Bit 3 löschen
Test = Test & %0111

;testen ob Bit 3 gesetzt ist
If Test & %1000 = %1000
  Debug "Bit 3 ist gesetzt"
Else
  Debug "Bit 3 ist nicht gesetzt"
EndIf
Dafür Prozeduren zu verwenden ist meiner Meinung nach unnötig.

Re: Bit schreiben / lesen

Verfasst: 15.02.2011 19:43
von Skiller
Danke Jungs!!!

Re: Bit schreiben / lesen

Verfasst: 16.02.2011 14:25
von Skiller
Hallo Freunde,
konnte mich leider jetzt erst intensiver damit auseinader setzen.
@Thorium
;Bit 3 löschen
Test = Test & %0111
wie hast Du denn das Bit 3 gelöscht, ich wollt´s doch selbst setzen. Aber unabhängig davon habe ich im CodeArchiv mit 'macro_testbits.pb' die glaub ich schnellste Lösung gefunden. Das Problem allerdings: OS:Windows. Habt ihr vielleicht ne superschnelle plattformunabhängige Lösung?

DANKE!!!

Re: Bit schreiben / lesen

Verfasst: 16.02.2011 14:28
von DarkDragon
Skiller hat geschrieben:Hallo Freunde,
konnte mich leider jetzt erst intensiver damit auseinader setzen.
@Thorium
;Bit 3 löschen
Test = Test & %0111
wie hast Du denn das Bit 3 gelöscht, ich wollt´s doch selbst setzen. Aber unabhängig davon habe ich im CodeArchiv mit 'macro_testbits.pb' die glaub ich schnellste Lösung gefunden. Das Problem allerdings: OS:Windows. Habt ihr vielleicht ne superschnelle plattformunabhängige Lösung?

DANKE!!!
Das funktioniert auf den anderen Betriebssystemen genauso ;-) .

Re: Bit schreiben / lesen

Verfasst: 16.02.2011 17:28
von Skiller
Setbits.pb
; German forum: ...
; Author: NicTheQuick (updated for PB4.00 by blbltheworm)
; Date: 16. November 2003
; OS: Windows
; Demo: Yes
-----------------------------------------------------------------------------------------
macro_testbits.pb
; German forum: ...
; Author: Froggerprogger
; Date: 15. December 2003
; OS: Windows
; Demo: Yes
Nur zur Klarstellung, d. h. also, dass es sowohl auf Mac, Linux, Vista, Win7 (64 u. 32) und alle anderen Wins sowiso laufen sollte.
...habe noch keinen Mac zum testen. Win7 läuft leider noch nicht ganz rund. Virtual Box :XP..., Linux folgt). Arbeite vorläufig also noch mit echtem XP ausserhalb einer Box.
Gibt´s eigentlich Probleme mit Virtual-Boxen und PB ? ( habe das Forum danach noch nicht gescannt)

so long... und Danke nochmals!!

Skiller

Re: Bit schreiben / lesen

Verfasst: 16.02.2011 17:55
von STARGÅTE
Ja, dieser Code ist aller einfachstes Basic ... (in bezug auf die benötigten Ressourcen)
Er läuft auf jedem OS mit jeder PB Version, auch Demo ...