www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Shiften aber wie?


Autor: Dominik Boine (dominik123)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dafür gibts den Datentyp float...

Autor: Dominik Boine (dominik123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, ich kann aber nur "Integer" Zahlen am Display ausgeben wie 
konvertiere ich denn dann so was???

Autor: Frank N. (arm-fan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
12,7 nicht schieben sondern mit 10 erweitern -> 127

127 kannst du wieder ausgeben, mußt nur noch das KOMMA richtig setzen.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast garantiert nicht in der log-Variaben 12,7 gespeichert.

Autor: Dominik Boine (dominik123)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

mach das doch mit sprintf.

wandelt die float zahl in einen string. den kannst du ausgeben.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf mit Gleitkommaunterstützung muss für die meisten 
Mikroprozessoren explizit mit einkompiliert werden und kostet dann 
ordentlich Platz.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.
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.

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