AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bits eines Byte invertieren

Ein Thema von Salomon · begonnen am 17. Okt 2002 · letzter Beitrag vom 17. Okt 2002
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Bits eines Byte invertieren

  Alt 17. Okt 2002, 14:42
Hallo,
ich möchte für meine Relaiskarte eine Function schreiben, die alle Relais umkehrt. Dazu hole ich mir ein Byte von der Relaiskarte, indem die Momentanen Schaltzustände gespeichert sind.
Nun muss ich die einzelnen Bits des Bytes umkehren. Also aus

10101010 wird
01010101

wie mache ich das? Mit XOR?

kennt jemand ein Tutorial für die anderen Boolean Operatoren not, and, or?

Bislang habe ich es so probiert:

Code:
Procedure InvertAllRelais(CardNr: Byte);
Var n, new : byte;
begin
  rel.GetPorts(CardNr,n);
  new := n xor n;
  rel.SetPorts(CardNr,new);
end;
Mfg
Salomon
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 17. Okt 2002, 14:54
Hallo Salomon,

bitweises Umkehren geht mit NOT.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#3
  Alt 17. Okt 2002, 15:12
Ein Quick-Tut on AND, OR, NOT, und XOR

Code:
[u]Bit1 | Bit2 || AND |  OR | XOR[/u]
  0  |   0  ||  0  |  0  |  0
  1  |   0  ||  0  |  1  |  1
  0  |   1  ||  0  |  1  |  1
  1  |   1  ||  1  |  1  |  0

[u]Bit | NOT[/u]
  0  |  1
  1  |  0

[u]Setzen eines Bits (BitIndex basierend auf 0)[/u]
Byte := Byte or (1 shl BitIndex)

[u]Löschen eines Bits (BitIndex basierend auf 0)[/u]
Byte := Byte and (not (1 shl BitIndex))

[u]Switchen eines Bits (BitIndex basierend auf 0)[/u]
Byte := Byte xor (1 shl BitIndex)
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#4
  Alt 17. Okt 2002, 15:27
Danke für das Quick-Tut, kann ich gut gebrauchen.
Mit NOT ist das ganze dann ja einfach zu realisieren.

Thanx
Salomon
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Bits eines Byte invertieren

  Alt 17. Okt 2002, 15:42
Zitat von Salomon:
ich möchte für meine Relaiskarte eine Function schreiben, die alle Relais umkehrt.
Wie wäre es mit TRelais.TogglePorts(1, $ff); ?
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#6
  Alt 17. Okt 2002, 16:51
Es Funktioniert, nur ich verstehe nicht warum.
Was heißt den das " $ff"??
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#7
  Alt 17. Okt 2002, 16:53
Das $FF ist gleich decimal 255 ist gleich binär 11111111 -> für alle Bits wird deren Wert umgekehrt.
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#8
  Alt 17. Okt 2002, 17:16
Achso, das $FF ist Hexadecimal oder?

Ich werde mir erstmal dies Tutorial durchlesen, da steht einiges über die Umwandlung von Zahlen in Hex, Decimal oder binär.

Thanx
Salomon
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#9
  Alt 17. Okt 2002, 17:38
Zitat von Salomon:
Achso, das $FF ist Hexadecimal oder?
Hi Salomon,

$ = Hex-Wert
# = Ascii-Wert

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 17. Okt 2002, 18:57
Moin Salomon,

im Abschnitt "Umrechnung von Dezimalzahlen in Binärzahlen", des von Dir geannten Tuts ist mir etwas aufgefallen.
Man muss als erstes die höchste Zweierpotenz ermitteln, die in die Dezimalzahl passt. Ist zwar eigentlich logisch, aber ich finde es wird nicht unbedingt deutlich.
(das gehört zwischen den ersten und zweiten Absatz des Abschnitts)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz