Shiften aber wie?

OP #877694
Lesenswert?

Hallo zusammen,
ich habe eine Frage zum Schiften der Bits.
Arbeite mit dem AVR Studio und einem ATmega162.
Wenn ich mir zum Beispiel eine Variable anlege von Typ "long"
und dieser Variable eine Zahl zuweise mit einer Kommerstelle.

long gross = 12.7;

Dann diesen wert auf einem Display ausgeben lasse.
Ist das Problem das die Ganzzahl sich darstellen lässt aber die Zahl 
nach der Kommerstelle nicht. Wie muss ich die bits Shiften das ich nur 
den Bereich nach der Kommerstelle in einen Integer Wert schreiben kann 
oder ist das ein ganzfalscher Ansatz?

int klein;

klein = (int)gross << 8;



Gruß und danke im vor raus ^^
Dominik
OP #877932
Lesenswert?

Wie ist es Möglich die Stellen hinter dem Kommer bei einer Float 
Variable in eine Integer variable zu bekommen???
Float kann ich nicht Shiften oder Undieren musste ich leider 
feststellen.

  float temporary;  // Bsp: Wert 12,7

  int time;

  int time2;

  long temporary2;

  /*****************************/

  time = (int)temporary;//gibt die Zahlen vor dem "," aus. Geht auch ^^

  temporary2 = (long)temporary;

  temporary2 = temporary2 >>16;

  temporary2 = temporary2 & 0xFFFFFF00;

  time2 = (int)temporary2;//Hier soll die Zahl hinter dem "," rein.
Persönliche Seite #877934
Lesenswert?

Frank N. wrote:
> 12,7 nicht schieben sondern mit 10 erweitern -> 127
>
> 127 kannst du wieder ausgeben, mußt nur noch das KOMMA richtig setzen.

Hast den (richtigen) tip von Frank nicht gelesen?

Du speicherst einfach die Zahl
int x = 127

ausgeben tust du dann

x/10, und x % 10

mit schiften wird das nix, das geht nur bei zweierpotenzen, oder fix 
komma format. (sowas kennt aber C mein ich nicht)

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