soluton
This commit is contained in:
parent
ad11ab7b5f
commit
e127c02007
1 changed files with 55 additions and 12 deletions
65
hallo_welt.c
65
hallo_welt.c
|
|
@ -1,18 +1,61 @@
|
|||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
//TODO: Hier könnte etwas fehlen...
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int temp;
|
||||
printf("Bitte gib eine Dezimalzahl ein: ");
|
||||
scanf("%d", &temp);
|
||||
binaerzahl(temp); //TODO: ist bis jetzt noch nicht definiert
|
||||
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
|
||||
}
|
||||
|
||||
/*
|
||||
* Die Funktion soll die eingegebene Zahl als Binärzahl ausgegeben werden
|
||||
* Hierfür sollen Bitwise Operatoren und/oder Bitwise Shift genutzt werden.
|
||||
* Musterlösung 1 a)
|
||||
*/
|
||||
void binaerzahl(int input){
|
||||
//TODO
|
||||
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;
|
||||
}
|
||||
Loading…
Reference in a new issue