Bit schreiben / lesen
Bit schreiben / lesen
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!
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!
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Bit schreiben / lesen
SetBits usw. findeste alles im CodeArchiv!
Die Syntax ist in jedem Falle noch gültig
Die Syntax ist in jedem Falle noch gültig
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Bit schreiben / lesen
Oder so: http://www.purearea.net/pb/CodeArchiv/M ... SetBits.pb
Aber das wird doch wohl jeder auf seinem Rechner haben.
Aber das wird doch wohl jeder auf seinem Rechner haben.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Bit schreiben / lesen
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:
Dafür Prozeduren zu verwenden ist meiner Meinung nach unnötig.
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
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Bit schreiben / lesen
Danke Jungs!!!
Re: Bit schreiben / lesen
Hallo Freunde,
konnte mich leider jetzt erst intensiver damit auseinader setzen.
DANKE!!!
konnte mich leider jetzt erst intensiver damit auseinader setzen.
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?@Thorium
;Bit 3 löschen
Test = Test & %0111
DANKE!!!
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Bit schreiben / lesen
Das funktioniert auf den anderen Betriebssystemen genausoSkiller hat geschrieben:Hallo Freunde,
konnte mich leider jetzt erst intensiver damit auseinader setzen.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?@Thorium
;Bit 3 löschen
Test = Test & %0111
DANKE!!!
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Bit schreiben / lesen
Nur zur Klarstellung, d. h. also, dass es sowohl auf Mac, Linux, Vista, Win7 (64 u. 32) und alle anderen Wins sowiso laufen sollte.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
...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
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 ...
Er läuft auf jedem OS mit jeder PB Version, auch Demo ...
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