www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bit in einem Int16 abfragen


Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

für eine Gleitkommadarstellung habe ich ein 16-Bit Wert (32 war mir zu 
lang). diesen möchte ich jetzt für arithmetische Funktionen zerlegen. 
Meine Frage ist nun, ob dies einfacher geht, als zu schauen, ob z.B. das 
erste Bit gesetzt ist, indem man guckt, ob die Zahl kleiner ist als 
32768.

Bzw. kann man vielleicht sogar bits "rauskopieren"? Also Stellen z.B. 
1-8 in einen 8bit-int reinschreiben???

Vielen Dank schon einmal im Voraus, Ozzy

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

Bewertung
0 lesenswert
nicht lesenswert
Das ist in C einfach:


uint16_t wert;
uint8_t einbyte;

if (wert & (1 << 15))
  puts("Bit 15 gesetzt\n");

if (wert & (1 << 13))
  puts("Bit 13 gesetzt\");

einbyte = wert & 0xFF;

Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vielen Dank für Deine Antwort! Kannst Du mir auch sagen, wie ich solche 
Werte shiften kann? Also z.B. 3x nach rechts? Und das eleganter als 3x 
durch 2 zu teilen???

MfG, Ozzy

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph O. wrote:
> Hi,
>
> vielen Dank für Deine Antwort! Kannst Du mir auch sagen, wie ich solche
> Werte shiften kann? Also z.B. 3x nach rechts? Und das eleganter als 3x
> durch 2 zu teilen???

Ist das eine Fangfrage?

wenn << shiften nach links bedeutet, was wird dann wohl das
Zeichen für 'Shiften nach rechts' sein?

Genau: >>

Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nein, das sollte keine Fangfrage sein. Ist das dann einfach (wert<<3) 
ist linksshift um 3?

MfG, Ozzy

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christoph

Das solltest du dir mal anschauen:

http://www.amazon.de/f%C3%BCr-Dummies-So-lernen-Si...

Autor: Emanuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach ne struktur, wo du zusätzlich zum wort, die einzelnen bits nochmals 
separat als variablen definierst, ist das einfachste und schnellste wenn 
dus oft brauchst...

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.