Ausgabe der letzten 8 Bits
-
Hallo,
fange gerade mit C++ Programmierung an.
Wie kann man von einem integer-Wert die letzten 8 Bits anzeigen lassen?Grüße Jens
-
was denn jetzt? 2 byte(16 bits) oder 8 bits(1byte)?
int foo = 0x2685; cout << foo & 0xFF << endl; // 1 byte -> 8 Bit cout << foo & 0xFFFF << endl; // 2byte -> 16 Bit
-
Mit bitweisem Und:
myint & 0xff
P.S.: 8 Bits sind aber meistens 1 Byte, nicht 2.
-
Es soll eine printf Ausgabe der letzten 8 Bit einer unsigned char Variable stattfinden! Irgendwie funzt das mit den Anweisungen nicht!
Momentan habe ich:
int(void)main
{
unsigned char Byte;
Byte=0x30;
}Wie kann ich mir die letzten 8 Bit dieses Wertes in einer printf- Ausgabe anzeigen lassen??
-
int(void)main // total falsch, die klammern gehören hinter das main und das void ist nicht nötig, aber erlaubt { unsigned char Byte; Byte=0x30; // bis auf den fehler oben ist doch schonmal alles korrekt }
so, wie du nun etwas ausgibst, solltest du selbst wissen - und wie du an die letzten 1 oder 2 byte kommst haben wir dir schon oben gesagt
-
ein char ist in der Regel 8 Bit groß, also ist es unfug dir die letzten 8 Bit rauszufiltern mit Bitmasken.
(Hierfür werden mich wahrscheinlich wieder einige Besserwisser zerreißen, weil die zufällig ein System haben, wo das nicht so ist :S)desweiteren bist du hier im C++ Unterforum... da benutzt man iostreams und nicht printf
aber gut, hier die C Lösung:
#include <stdio.h> int main(void) { char blub = 0x30; int n = 7; for (; n >= 0; --n) printf("%c", ((blub & (1 << n)) ? '1' : '0')); printf("\n"); return 0; }
mir ist zumindest kein Formatcode für binäre Ausgabe geläufig...
Hexadezimal Ausgabe geht mit %x bzw. %X, aber dann kommt nur wieder die 30 raus.In C++ könntest du dies tun (leider unterstützt auch C++ standardmäßig nur Oktal, Dezimal und Hexadezimal):
#include <iostream> int main(void) { char blub = 0x30; for (int n = 7; n >= 0; --n) std::cout << ((blub & (1 << n)) ? '1' : '0'); std::cout << std::endl; return 0; }