Forum: Compiler & IDEs 16Bit zu 2x8Bit


von -bjoern- (Gast)


Lesenswert?

Hallo, ich hab mal eine Frage, und zwar habe ich eine 16Bit Variable. 
Ich möchte diese jetzt in 2x8 Bit aufteilen also Binär
sprich die Binärzahl ist z.B.

Var0="0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0"

jetzt möchte ich aber gerne 2 Variablen haben mit jeweils 8Bit also:

Var1="0 0 0 0 0 1 1 1"

Var2="0 1 1 0 0 1 1 0"

wie kann ich das am geschicktesten anstellen in C??

Gruß
Björn

von Falk (Gast)


Lesenswert?

@-bjoern-

>Hallo, ich hab mal eine Frage, und zwar habe ich eine 16Bit Variable.
>Ich möchte diese jetzt in 2x8 Bit aufteilen also Binär

Die sind schon aufgeteilt, du musst nur zugreifen.

uint16_t var_16;
uint8_t var_a, var_b;

var_a = var_16 & 0xFF;   // high byte
var_b = var_16 >> 8;     // low byte

MfG
Falk

P.S. Man kanns auch mit ner UNION machen, da bin ich aber nicht ganz 
fit.

von Rahul, der Trollige (Gast)


Lesenswert?

>wie kann ich das am geschicktesten anstellen in C??

Var1 = (unsigend char) (Var0>>8);
Var2 = (unsigend char) Var0;

Sowas dürfte sich in jedem C-Bch finden.

von johnny.m (Gast)


Lesenswert?

1
union
2
{
3
    unsigned int Wert16;
4
    unsigned char Wert8[2];
5
}
In Wert16 steht der Gesamtwert, in Wert8[0] und Wert8[1] die beiden 
Einzelbytes...

von Stefan Salewski (Gast)


Lesenswert?

// AT90USB/macros.h
// S. Salewski 29-JAN-2007

#ifndef MACROS_H
#define MACROS_H

#define MSB(w) ((char*) &w)[1]
#define LSB(w) ((char*) &w)[0]

#endif

von -bjoern- (Gast)


Lesenswert?

Ok danke...
Sorry hatte auf die schnelle kein C-Buch zur Hand...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.