mikrocontroller.net

Forum: PC-Programmierung C# - Bit löschen


Autor: Harry L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Moin,

wieso meckert der Compiler?
            uint value = 0b00000001;
            value &= ~(1 << 0);

Er sagt -> "Der Konstantwert "-2" kann nicht in "uint" umgewandelt 
werden.

Wie umgehe ich das? Casting?

Autor: Dirk K. (merciless)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uint value = 0b00000001;
uint mask = 1 << 0;
value &= ~mask;

merciless

Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder so:
uint value = 0b00000001;
value &= ~(1u << 0);

Autor: Harry L (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Compiler beschwert sich immer noch bzgl. des Syntax.

Beitrag #5762407 wurde vom Autor gelöscht.
Autor: Dirk K. (merciless)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
???

merciless

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk K. schrieb:

> ???

Wo ist dein Problem? Das ist doch genau das zu erwartende Ergebnis. Wenn 
nur Bit0 gesetzt war, wird nach dem Löschen von Bit0 wohl was 
herauskommen?

Autor: rauten-c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harry L. schrieb:
> Wie umgehe ich das?

Vernünftige Programmiersprache benutzen?

Autor: Dirk K. (merciless)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Dirk K. schrieb:
>
>> ???
>
> Wo ist dein Problem? Das ist doch genau das zu erwartende Ergebnis. Wenn
> nur Bit0 gesetzt war, wird nach dem Löschen von Bit0 wohl was
> herauskommen?

Häh? Das "???" bezog sich auf die Aussage, der
Compiler würde das nicht akzeptieren. Mein
Screenshot zeigt aber, dass dem nicht so ist.
Geh woanders trollen.

merciless

Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harry L schrieb:
> Der Compiler beschwert sich immer noch bzgl. des Syntax.

Also bei mir gehen auch beide Varianten.

Autor: c-hater (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Dirk K. schrieb:

> Häh? Das "???" bezog sich auf die Aussage, der
> Compiler würde das nicht akzeptieren.

Und woher, bitteschön, sollte man wissen, dass sich das darauf bezog?

> Geh woanders trollen.

Lerne erstmal so zu zitieren, dass man weiss, worauf sich deine 
Statements beziehen, bevor du es wagen kannst, mit den Erwachsenen zu 
diskutieren.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
c-hater schrieb:
> Und woher, bitteschön, sollte man wissen, dass sich das darauf bezog?

Aus der Kombination des Screenshots und des Textes. Im Kontext des 
Threads ist das jetzt echt nicht besonders kompliziert zu erkennen, 
zumal im Posting unmittelbar vor dem Posting mit dem Screenshot das 
hier steht:

> Der Compiler beschwert sich immer noch bzgl. des Syntax.


Mir scheint, nicht Dirk hat ein Problem, sondern Du:

> bevor du es wagen kannst, mit den Erwachsenen zu diskutieren.

Noch mehr Dinge, von denen Du keine Ahnung hast.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:

> Aus der Kombination des Screenshots und des Textes.

Ach? Der Sreenshot zeigt: alles ist OK und wie es sein sollte und der 
Text sagt: "???". Wie soll man daraus erkennen, dass ich das "???" auf 
etwas ganz anderes bezieht?

> Im Kontext des
> Threads ist das jetzt echt nicht besonders kompliziert zu erkennen

Das wäre wohl so, wenn es in diesem Forum statt der 
TeleTubbi-Linear-Listen echte Thread-Darstellungen gäbe, also Bäume. 
Dann (und nur dann) könnte man sowas notfalls tatsächlich allein dem 
Thread-Kontext ermitteln (aber auch dann wäre ein korrektes Zitat immer 
noch durchaus wünschenswert und hilfreich).

Diese, überaus sinnvolle und seit 40 Jahren bewährte Baumstruktur (z.B. 
von Anfang an Standard im UseNet) ist aber leider bekanntermaßen hier 
immer noch nicht verfügbar. Wohl mit Rücksicht auf die Dummies, denen 
sowas "kompliziertes" wie ein Baum nicht zugemutet werden kann, weil 
schon diese primitive Struktur ihre intellektuellen Fähigkeiten weit 
überfordert...

Ja, OK, in Oma Gertrudes Häkelforum hätte ich dafür vielleicht sogar 
noch Verständnis. Aber nicht in einem µC-Forum...

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das stinkt nach Ausrede.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:

> Das stinkt nach Ausrede.

OK, dann bitte mal "Butter bei die Fische". Woran genau hätte ich 
erkennen müssen, dass das "???" sich

1) überhaupt auf ein anderes Posting bezog

und

2) auf welches genau

Mach' mich schlau, Grosser Meister...

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scroll drei Zentimeter nach oben, wenn Du den Screenshot siehst.

Daß dieses Forum überwiegend sequentiell funktioniert, könntest auch Du 
in den vergangenen Jahren mitbekommen haben; hast es ja immerhin gerade 
geschafft, einen Rant darüber abzulassen.

Und zwischen den beiden Beiträgen ist auch genug Zeit verstrichen, daß 
klar ist, daß vor dem Posten des Beitrags mit dem Screenshot auch der 
Beitrag unmittebar davor gesehen wurde.

Beitrag "Re: C# - Bit löschen"

Beitrag "Re: C# - Bit löschen"

(Der Beitrag dazwischen wurde von Dirk selbst gelöschter, warum auch 
immer)

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:

> Scroll drei Zentimeter nach oben, wenn Du den Screenshot siehst.
>
> Daß dieses Forum überwiegend sequentiell funktioniert, könntest auch Du
> in den vergangenen Jahren mitbekommen haben; hast es ja immerhin gerade
> geschafft, einen Rant darüber abzulassen.
>
> Und zwischen den beiden Beiträgen ist auch genug Zeit verstrichen, daß
> klar ist, daß vor dem Posten des Beitrags mit dem Screenshot auch der
> Beitrag unmittebar davor gesehen wurde.
>
> Beitrag "Re: C# - Bit löschen"
>
> Beitrag "Re: C# - Bit löschen"
>
> (Der Beitrag dazwischen wurde von Dirk selbst gelöschter, warum auch
> immer)

Du salbaderst offensichtlich rum. Es gibt definitiv keine Information, 
aus der ich den Bezug hätte entnehmen können. Allenfalls hätte ich ihn 
mit hohem Aufwand und einem gewissen Mass an Heuristik erahnen können. 
Das ist im Kern, was du da ausdrückst.

Kommt dir das nicht selber etwas erbärmlich vor? Insondere angesichts 
dessen, was vor fast einem halben Jahrhundert im Usenet schon absolut 
kein Problem war?

Autor: nicht“Gast“ (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
c-hater schrieb:
> Du salbaderst offensichtlich rum. Es gibt definitiv keine Information,
> aus der ich den Bezug hätte entnehmen können. Allenfalls hätte ich ihn
> mit hohem Aufwand und einem gewissen Mass an Heuristik erahnen können.
> Das ist im Kern, was du da ausdrückst.

Tut mir leid für dich. Irgend wie hat das jeder hier hinbekommen außer 
dir. Vielleicht liegst du in diesem Fall einfach falsch.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
c-hater schrieb:
> Insondere angesichts dessen, was vor fast einem halben Jahrhundert im
> Usenet schon absolut kein Problem war?

Nach Deinem Auftreten in diesem Forum gerade in letzter Zeit würde ich 
klar sagen:

Dich braucht dieses Forum nicht. Such' Dir doch 'ne andere Trollwiese, 
wo Du herumpöbeln kannst.

Autor: Dirk K. (merciless)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> (Der Beitrag dazwischen wurde von Dirk selbst gelöschter, warum auch
> immer)
So, dann kläre ich das hier mal auf:
Ursprünglich sah mein Post so aus:
Harry L schrieb im Beitrag #5762385:
> Der Compiler beschwert sich immer noch bzgl. des Syntax.

???

merciless
mit Anhang. Leider war der Screenshot nicht ganz
eindeutig. Deswegen habe ich einen 2. gemacht.
Ich hab einfach meinen Post gelöscht und wollte
den nochmal genauso anlegen. Gesagt getan, Anhang
dran und das Posten hat nicht funktioniert. Reload
der Seite etc. - nichts. Also habe ich das Zitat
weggelassen und gepostet, das ging.

Für einen Mitteleuropäer, der halbwegs geistig normal
entwickelt ist, sollte sich der Sinn der 3 Fragezeichen
auch aus dem Kontext ergeben.

Aber der Herr, der lieber Pascal programmiert,
hat wohl gedacht in diesem Thread ist fein trollen
möglich. Ich habe bei meinem ersten Post schon
geprüft, ob der Compiler das frisst. Und über 20 Jahre
Programmiererfahrung haben auch Grundkenntnisse in
den Bitoperatoren bei mir hinterlassen. Ich verbessere
doch keinen Code, den ich nicht verstanden habe!

merciless

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk K. schrieb:
> Deswegen habe ich einen 2. gemacht.
> Ich hab einfach meinen Post gelöscht und wollte
> den nochmal genauso anlegen. Gesagt getan, Anhang
> dran und das Posten hat nicht funktioniert.

Die Forumssoftware verweigert das mehrmalige Posten ein- und desselben 
Textes, um so Spammern einen Riegel vorzuschieben. Leider nützt das 
vorherige Löschen des Originalbeitrags nichts, denn es hätte ja genauso 
von einem Moderator vorher als Spam erkannt werden und von ihm gelöscht 
werden können. Okay, man könnte zwar diese beiden Fälle unterscheiden, 
aber das ist nicht Thema dieses Threads.

> Für einen Mitteleuropäer, der halbwegs geistig normal
> entwickelt ist, sollte sich der Sinn der 3 Fragezeichen
> auch aus dem Kontext ergeben.

Ich habe ohne das Zitat - zugegebenermaßen - ca. eine Sekunde mehr 
gebraucht, um den Kontext zu verstehen. War also schon etwas schwieriger 
;-)

Autor: Arno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank M. schrieb:
> Dirk K. schrieb:
>> Für einen Mitteleuropäer, der halbwegs geistig normal
>> entwickelt ist, sollte sich der Sinn der 3 Fragezeichen
>> auch aus dem Kontext ergeben.
>
> Ich habe ohne das Zitat - zugegebenermaßen - ca. eine Sekunde mehr
> gebraucht, um den Kontext zu verstehen. War also schon etwas schwieriger
> ;-)

Böse Zungen würden jetzt behaupten, dass Lesekompetenz nun mal sehr 
ungleich verteilt ist. Was für dich eine Sekunde dauert, dauert bei 
(mindestens einem) anderen Tage, Wochen oder klappt nie.

Aber vielen Dank für die Erläuterung (die ich aus dem Zitat gelöscht 
habe).

MfG, Arno

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Forum ist einfach der Hammer. 5 Beiträge unter einem komplett 
sachlichen Thread und es eskaliert schon wieder. :-D Grandios.

Autor: fop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
            uint value = 0x01;
            value &= ~(uint)(1 << 0);

Harry L. schrieb:
> wieso meckert der Compiler?
Weil (1 << 0) vom Typ int ist, wenn Du das invertierst, setzt Du das Bit 
für negatives Vorzeichen und der dadurch entstandene Wert (-2) passt 
nicht in einen uint.
> Wie umgehe ich das? Casting?
genau, das bereits gezeigte
            uint value = 0x01;
            value &= ~(1u << 0);
ist die Kurzform des Castings. Die 1 wird als unsigned gekennzeichnet, 
damit bleibt es auch nach dem Schieben ein uint.

PS : Mein Wuschel Studio mag keine Binärzahlen mit dem Präfix 0b 
annehmen. Willkommen zurück aus der Microchip Welt...

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fop schrieb:
> Mein Wuschel Studio mag keine Binärzahlen mit dem Präfix 0b annehmen.

Damit hat es auch recht; das 0b-Präfix ist kein Bestandteil 
irgendeiner C- oder C++-Spezifikation, sondern eine nichtportable 
Erweiterung.

Man sollte darauf verzichten.

Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Damit hat es auch recht; das 0b-Präfix ist kein Bestandteil
> irgendeiner C- oder C++-Spezifikation, sondern eine nichtportable
> Erweiterung.

In C# ist es wohl seit Version 7.0 möglich Binär Literale zu benutzen:
https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/uint

Autor: MeierKurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Rufus Τ. F. schrieb:
>
>> Das stinkt nach Ausrede.
>
> OK, dann bitte mal "Butter bei die Fische". Woran genau hätte ich
> erkennen müssen, dass das "???" sich
>
Andere (sogar ich, beim flüchtigen drüberlesen) habens verstanden.
Das dürfte doch genügen. Noch besser: Es bemühen sich doch einige, dir 
das zu erklären. Und du kommst stattdessen mit Bäumen aus dem letzten 
Jahrhundert.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tek schrieb:
> In C# ist es wohl seit Version 7.0 möglich

Nun könnte "fop" eine der zahlreichen anderen Programmiersprachen 
verwendet haben, die man mit Visual Studio nutzen kann - C, echtes C++, 
MS-pervertiertes C++ (C++/CLI, "Managed C++" etc.) oder irgendeine 
andere .Net-Sprache.

Leider schreiben die wenigsten, die sich auf Visual Studio beziehen, 
welche Programmiersprache sie tatsächlich einsetzen (oder verwechseln, 
falls sie es doch tun, gerne echtes C++ mit den MS-pervertierten 
Varianten).

Beitrag #5768146 wurde vom Autor gelöscht.
Autor: fop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C# in VS Express 2013

Wie man jetzt die Jahreszahl in eine Zahl kleiner als 7 umrechnet weiß 
ich gerade nicht.

Als Zielframework war zufällig .NET 4.5 ausgewählt.

Autor: Dirk K. (merciless)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fop schrieb:
> C# in VS Express 2013
>
> Wie man jetzt die Jahreszahl in eine Zahl kleiner als 7 umrechnet weiß
> ich gerade nicht.
>
> Als Zielframework war zufällig .NET 4.5 ausgewählt.
Ich hab hier VS 2017, das entspricht V15.x
V7 müsste im letzten Jahrtausend gewesen sein ;)
(Menü Hilfe -> Info über VS)

merciless

Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VS2013 Wurde mit C# 5.0 ausgeliefert, 15.X ist nur die Versionsnummer 
vom Visual Studio.

Die 5.0 bzw 7.0 bezieht sich auf die Sprachspezifikation.

https://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29#Versions

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:

> Damit hat es auch recht; das 0b-Präfix ist kein Bestandteil
> irgendeiner C- oder C++-Spezifikation, sondern eine nichtportable
> Erweiterung.
>
> Man sollte darauf verzichten.

Ganz genau. Auf C/C++.

Eine Sprache, die standardmäßig nichtmal eine adäquate 
Literaldarstellung für die Grundlage der der ganzen digitalen Rechnerei, 
nämlich Binärzahlen bietet, ist ein Witz. Ein schlechter.

Allein die bloße Existenz dieser "nichtportablen" (ich glaub' mir läuft 
ein Ei aus) Erweiterung in vielen einschlägigen Compilern zeigt doch nur 
eins: Der Sprach-Standard taugt nix, wenn fast alle relevanten Compiler 
sich genötigt sehen, so eine Erweiterung zu implementieren...

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Eine Sprache, die standardmäßig nichtmal eine adäquate
> Literaldarstellung für die Grundlage der der ganzen digitalen Rechnerei,
> nämlich Binärzahlen bietet, ist ein Witz.

Nö. C/C++ sind keine Lehrsprachen für Programmieranfänger.

Aber darum geht es in diesem Thread überhaupt nicht.

> zeigt doch nur eins:

Du hast keine Ahnung, aber davon sehr, sehr viel.

Wie wäre es, wenn Du Dich fortan nur noch in Threads zu Wort meldest, 
in denen es um die 68k-Assemblerprogrammierung geht? Denn von der gibst 
Du ja vor, Ahnung zu haben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.