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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren