Schieben einer 1 über mehr als 15 Stellen?

Gast #549087
Lesenswert?
• ▲
▼
Danke - wunderbar - ich bin begeistert ...


Wo bekommt man denn diese Infos her? Gibt es da irgendeine Übersicht, wo 
das alles mal beschrieben ist? Im Tutorial hier habe ich da nichts 
gefunden.


Danke ....
Gast #549102
Lesenswert?
• ▲
▼
Das sollte in jedem C-Lehrbuch drin stehen. Eine Operation wird,
unabhängig vom Typ der Ergebnisvariablem, immer in dem Wertebereich
oder der Genauigkeit des "größten" Datentyps der Operanden ausgeführt,
also z. B.

  int   op int    -> int
  long  op int    -> long
  int   op long   -> long
  int   op float  -> float
  float op double -> double

usw.

Wenn die Schiebeoperation also in 32 Bit (long) ausgeführt werden
soll, muss man dafür sorgen, dass mindesetens einer der Operanden long
ist. Dies erreicht man durch eine Typecast (Voranstellen von "(long)")
oder - bei Konstanten wie in diesem Beispiel - durch Anhängen eines
"L".
Gast #549668
Lesenswert?
• ▲
▼
>da ich aber 28 Flags abfragen möchte, könnte ich dieses Schieben über 32
>Stellen gut gebrauchen --

Ist es hier vielleicht nicht besser die Flags zuunterteilen wie beim AVR 
und diese in ein Struct zupacken?


Gast #550062
Lesenswert?
• ▲
▼
Ja, habe ich auch immer so gemacht, nur will ich diesmal an einer Stelle 
wissen, ob das gesamte Register (Variable) Null bzw. einen anderen Wert 
hat.

Das habe ich mit struct nicht hinbekommen ..... also z.B.

Control.Flag_1 = 1;
Control.Flag_2 = 0;

...
usw.
...


if (Control==0) ..... klappt irgendwie nicht (logisch oder?)

Außerdem müsste ich trotzdem 28 Stellen schieben können, da ich die 
Flags über eine For-Schleife (i=0;i>28;i++) abfrage. Wie soll ich dass 
mit Strucs machen?
Gast #550125
Lesenswert?
• ▲
▼
PS: Unions wurden erdacht, um den gleichen Platz für verschiedene Dinge 
nutzen zu können. Nicht im den Compiler hinterrücks zu verarschen - denn 
nichts anderes ist die Typkonvertierung per union.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.