#include #include void binaerzahl1A(int input); void binaerzahl1B(int input); void binaerzahl2(int input); int32_t zweierkomplement(int32_t input); int main(void) { int temp; printf("Bitte gib eine Dezimalzahl ein: "); scanf("%d", &temp); binaerzahl2( temp); // Hier muss der Funktionsaufruf entsprechend angepasst werden } /* * Musterlösung 1 a) */ void binaerzahl1A(int input) { for (int8_t i = 0; i < 8; i++) { // Wir geben 8 mal aus: uint8_t erg = (input << i); // Wir verschieben so, dass das aktuelle Bit am Anfang steht erg = erg >> 7; // Da wir uint8_t nutzen, wird der Rest abgeschnitten und // wir verschieben zurück, sodass wir nur 0 oder 1 ausgeben printf("%d", erg); } } /* * Musterlösung 1 b) */ void binaerzahl1B(int input) { for (uint8_t i = 0; i < 32; i++) { uint32_t erg = (input << i); erg = erg >> 31; printf("%d", erg); } } /* * Musterlösung 2 */ void binaerzahl2(int input) { if (input < 0) { input = zweierkomplement(input); printf("-"); } for (uint8_t i = 0; i < 32; i++) { uint32_t erg = (input << i); erg = erg >> 31; printf("%d", erg); } } int32_t zweierkomplement(int32_t input) { input = ~input; input++; return input; }