Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Variable in Binärschreibweise???

Empfohlene Antworten

Das geht nicht. C# unterstützt nur dezimale und hexadezimale Integerliterale.

Wenn es auch mit einerm String als Quelle geht: System.Convert.ToInt32 hat eine Überladung mit String und Zahlensystem.

Du könntest aber auch die Zahl im Kopf in Hex umrechnen, das ist ziemlich einfach.

Wozu könnte man so etwas brauchen?

PS: Man kann es auch leicht verändert selbst umsetzen.

Kein Problem. Dazu musst Du aber keine Binärzahlen im Quelltext angeben können.

Beispiel:

const int Button1 = 1;

const int Button2 = 2;

const int Button3 = 4;

...usw...

int Variable = Button1 + Button3; // Für Button 1 und 3 gesetzt

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);

?

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.

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 ;)

  • Autor

Ja genau.... war ein Schreibfehler: 2^12 muss das heißen.

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.

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?

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?

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.