Bit schreiben / lesen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Bit schreiben / lesen

Beitrag 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!
Benutzeravatar
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

Beitrag von ts-soft »

SetBits usw. findeste alles im CodeArchiv!
Die Syntax ist in jedem Falle noch gültig :mrgreen:
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.
Bild
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Bit schreiben / lesen

Beitrag von TomS »

ts-soft hat geschrieben:CodeArchiv!
http://www.purearea.net/pb/CodeArchiv/German.html :wink:
Benutzeravatar
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

Beitrag von ts-soft »

Oder so: http://www.purearea.net/pb/CodeArchiv/M ... SetBits.pb
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.
Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Bit schreiben / lesen

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Re: Bit schreiben / lesen

Beitrag von Skiller »

Danke Jungs!!!
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Re: Bit schreiben / lesen

Beitrag 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!!!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Bit schreiben / lesen

Beitrag 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 ;-) .
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.
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Re: Bit schreiben / lesen

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7035
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Bit schreiben / lesen

Beitrag 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 ...
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
Antworten