Zum Inhalt springen

Variable in Binärschreibweise???


steinadler

Empfohlene Beiträge

Also zum Verständnis:

Am Ende soll da ne Methode wie diese hier rauskommen.

MeineKlasse.ButtonSammlungSetState( 10110011b );

Das kannst Du mit dem normalen Compiler vergessen. Oder schreib Dir einen eigenen Compiler (bzw. erweitere einen anderen).

Aber wo liegt für Dich bitte der Unterschied zu

MeineKlasse.ButtonSammlungSetState(256+64+32+4+2);

bzw.

MeineKlasse.ButtonSammlungSetState(358);

?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber wenn du sowieso ein Literal angibst, kannst du das doch auch gleich in Dezimal, oder noch einfacher, in Hex umrechnen. Das musst du doch nur ein einziges Mal tun.

Das Zahlensystem wirkt sich nur auf Quellcode, Ein- und Ausgabe aus, eben überall dort, wo es auf die Darstellung ankommt. Beim Rechnen ist das egal. Bits kannst du auch mit Dezimalliteralen auswerten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

aber gerade dieses Umrechnen wollte ich umgehen, da das ja im Prinzip 12^2 verschiedene Werte sind

Was Du mit 12^2 meist, solltest Du erläutern. Dir ist aber schon klar, dass man Bits auch einzeln testen kann?

12 Tasten, zwölt Bitpositionen, 12 Zahlen, die Du beliebig addieren oder per binärem "oder" verknüpfen kannst:

2^0 = 1

2^1 = 2

2^2 = 4

2^3 = 8

2^4 = 16

2^5 = 32

2^6 = 64

2^7 = 128

2^8 = 256

2^9 = 512

2^10 = 1024

2^11 = 2048

Da ich Dir diese Trivialität nun aufgeschrieben habe, kannst Du nun das Umrechnen durch bequemes Abschreiben umgehen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich wollte halt den Aufwand mit dem zusammenrechnen der einzelnen Werte (2, 4, 8 usw.) umgehen.

Das lässt sich meiner Meinung nach in Binärschreibweise am einfachsten machen.

Bitte nimm es mir nicht übel, aber ich gewinne den Eindruck, dass Du überhaupt keine Ahnung hast. Wenn es Dir im Kopf für vorgegebene Bitkombinationen zu anstrengend ist: Der "+"-Operator existiert. Abgesehen davon wirst Du Dein Bit-Array sicher ohnehin dynamisch zur Laufzeit verändern und verwalten wollen, denn Du wirst ja wohl kaum auf die Idee gekommen sein, alle möglichen Kombinationen von 12 Tasten "fest verdrahtet" vorab zu programmieren. Oder irre ich mich etwa?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was meinst du mit "einfacher"? Der Compiler würde - wenn er Dualliterale verarbeiten könnte - aus beidem denselben Code machen.

Wenn du mit "einfacher" meinst, dass mit dem Dualliteral einfacher zu erkennen ist, welche Bits gesetzt sind: Du kannst dir auch symbolische Konstanten für die Zweierpotenzen anlegen.

Dann kannst du SetEnabled(F1 + F3 + F5 + F6) schreiben.

Und ich habe es ja schon erwähnt: Es ist sehr einfach, Dualzahlen im Kopf in Hex umzurechnen. Du kannst je vier Dualziffern zu einer Hexziffer zusammenfassen.

Aber eine Frage hast du immer noch nicht beantwortet: Wie viele von diesen Kombinationen willst du eigentlich in deinen Code schreiben, dass dich die Umrechnung so stört?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Steinadler,

versuchst du vielleicht die Buttons durch eine Art Konfiguration zu setzen, die vorher irgendwo festgelegt wurde? Wenn ja könntest du ja mit einem Klassenobjekt oder mit Flags arbeiten, was mehr Sinn macht als 1100100101 oder ähnliche Konstrukte (Vorallem bei der Lesbarkeit).

Ein Beispiel für die Verwendung von Flags

[Flags]

enum ButtonValues : long //Kannst natürlich auch andere Ganzzahltypen verwenden mit Long kannst du bis zu 64 Buttons ansprechen

{

NoButton = 0,

Button1 = 0x00000001, //Die werte müssen 2er Potenzen sein um jeweils 1 Bit zu setzen.

Button2 = 0x00000002,

Button3 = 0x00000004,

Button4 = 0x00000008,

Button5 = 0x00000010

}

[sTAThread]

static void Main(string[] args)

{

ButtonValues buttonVals = (ButtonValues.Button1|ButtonValues.Button3); // Hier kanns du beliebig viele Flags mit | verknüpfen

Console.WriteLine(((buttonVals & ButtonValues.Button1) == ButtonValues.Button1)?"Button1 Enabled":"Button1 Disabled");

Console.WriteLine(((buttonVals & ButtonValues.Button2) == ButtonValues.Button2)?"Button2 Enabled":"Button2 Disabled");

Console.WriteLine(((buttonVals & ButtonValues.Button3) == ButtonValues.Button3)?"Button3 Enabled":"Button3 Disabled");

Console.ReadLine();

}

Hoffe das hilft dir weiter.

MfG

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...