PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nibble einer Zahl erzeugen



Murus
01.03.2007, 15:15
Hallo zusammen,

ich möchte von einer Dezimalzahl <=9 die Binärdarstellung erzeugen.
z.B. für eine 3 ein "0011"
Muss ich dafür die als Byte gespeicherte 9 zuerst binär als String abspeichern und die einzelnen Bits per mid auslesen? (ich brauch die Bits einzeln).
Oder gibt es da eine einfachere Möglichkeit? Sind nämlich schon ein paar Variablen, die so aufbereitet werden müssen...

inschenjoer
01.03.2007, 15:18
Hallo,

vielleicht hilft dir ja folgendes weiter:



void bin_prnt_byte(int x)
{
int n;
for(n=0; n<8; n++)
{
if((x & 0x80) !=0)
printf("1");
else
printf("0");

if (n==3) {
printf(" "); /* insert a space between nybbles */
}
x = x<<1;
}
}

mfg
Sebastian

Murus
01.03.2007, 15:38
Stichwort: Bascom-Forum ;)

repi64
01.03.2007, 19:38
meines Wissens nach geht es bei Bascom auch sehr komfortabel mit:
set mybyte.1
reset mybyte.4
......
oder aber mybyte.4 = 0
mybyte.2 = 1

.....
? mybyte

mybyte = 255
? mybyte.3 (sollte 1 sein)

Sonst ist es auch möglich einzelne Bits im Byte mit einer AND bzw. OR Operation zu setzten oder zu reseten.
Also mybyte = mybyte AND 127
Die genauen Byte Werte für die einzelne Bits habe ich aber grad nicht zur Hand.
Es geht aber mit dem oberen Beispiel einfacher und überschaubarer.

Vitis
01.03.2007, 19:58
1, 2, 4, 8, 16, 32, 64, 128
addiert gibt das 255

oder gleich den Binärwert verwenden

x_byte = &B01010101
x_byte=x_byte AND &B00001111

daraus folgt:
x_byte = 0000 0101