# Dezimales Zahlensystem -> Binäres System



## domy (21. September 2005)

Guten Abend 

Ich mach grad für die Schule ein kleines Projekt. Es wird ein Programm in dem Zahlen aus dem Dezimalen Zahlensystem in das Binäre (Duale) Zahlensystem umgerechnet werden sollen. Dazu bräuchte ich noch ein command wellches nur die NACHKOMMASTELLE einer Zahl prüft.
Mein Code sieht folgendermassen aus:

#include <iostream.h>

void main()
{
	cout<<"Bitte geben Sie ihre Dezimalzahl ein!";
	float dezimalzahl; //speicher für die Dezimalzahl
	cin>>dezimalzahl;
	if(dezimalzahl<=0) // if und else zum abgleich zahl kleiner oder gleich 0 oder zahl grösser als 0
		cout<<"0"<<endl;
	else
		cout<<"1"<<endl;
};

Ist die Zahl gleich 0 oder kleiner 0 kommt 0 raus.
Ist die Zahl größer 0 kommt 1 raus.
Soviel dazu.

Jetzt brauch ich eine Schleife glaube ich. Diese soll die eingegebene Dezimalzahl durch 2 Teilen und wenn hinter dem Komma eine 0 steht jewails 0 ausgeben und wenn dahinter eine 0,5 steht soll es eine 1 ausgeben.
Also so:
"zahl" : 2 = "zahl2" wenn "zahl2" z.B. 10,5 dann ausgabe 1 wenn aber 10,0 dann ausgabe 0.

Könnt ihr mir helfen? Also ich brauch das Command welches NUR die ERSTE Kommastelle abgleicht ... 

Mit freundlichen grüssen ...


----------



## Marko Petsch (21. September 2005)

Hallo,
also wenn ich dich richtig verstanden habe soll eine Dezimalzahl in eine Binärzahl umgewandelt werden. Dafür ist der von dir vorgestellte Algorithmus nicht geeignet. Ich möchte dir ein kleinen Denkanstoss geben. 
Beispielsweise möchtest du die Zahl 7 in eine Binärzahl umwandeln. Ich nehme jetzt´4 Bit zur Anschauung.

2^3 2^2 2^1 2^0                         hier ist dir Wertigkeit der Bitstellen
0    0    0    0                            hier wird der Binärwert angegeben

Beispiel: Du möchtest die Zahl sieben in eine Binärzahl umwandeln..
als erstes rechnen wir mal aus wieviel jedes Bit bedeuet: 2^0 = 1, 2^1=2, 2^2=4, 2^3=9,
Die sieben setzt sich also zusammen aus: 1+2+4=7
                                                               also ist 7 Binär 0 1 1 1. 
Ich schreibe das deswegen, weil ich mit dem durch 2 Teilen der Dezimalzahl nicht wirklich einen sinnvollen mathematischen Algorithmus sehen kann.

Wenn du mehr Hilfe brauchst melde dich


----------



## domy (21. September 2005)

ok das ist schonmal sehr interessant wie du das meinst. So hab ichs auch auf meine Blatt stehen. Gibt ja so Tabellen wo Binär und drüber die 2 hoch irgendwas stehen. ich hab nur leider grad kein plan wie ich das schreiben soll... die Formel ist mir logisch alles kein Problem.Nur mir hengts dann grad wenns in code muss...
ich überleg mir den morgen nochmal und schreib nen Code rein jez mal schlafen weil ich seh den Code schon an den wänden XD.


----------



## Marko Petsch (22. September 2005)

```
#include <stdio.h>

int a, b, n, n1, sys1, sys2;  // globale Variablen
char c[20] = "0123456789ABCDEF"; // der Zeichensatz
int eingabe() {
 int a, i, j, b;
 char s[20];
 printf("Geben Sie Ihre Zahl ein\n");
 scanf("%s", &s);
 a = 0;
 j = 0;
 i = 0;
 // berechnet den Wert von s im 10er System
 do {
  if (s[i] != '\0')
   printf("%c", s[j]);
  for (i = 0; i <= 15; i++) {
   if (s[j] == c[i])
	b = i;
  }
  if (s[j] != '\0')
   a = a * sys1 + b;
  j++;
 } while(s[j] != '\0');
 printf(" (%d) = ", sys1);
 return a;
}
void main() {
 printf("Geben Sie das Ursprungszahkensystem an (2-16): ");
 scanf("%d", &sys1);
 a = 1;
 b = 0;
 
printf("Geben SIe das Zielzahlensystem an (2-16): ");
scanf("%d", &sys2);
do {
n = eingabe();
n1 = n;
 
// sucht die erste Potenz von sys2 die grosesser als n ist
while (n >= a)
a *= sys2;
 
// berechnet alle STellen von der groessten zur kleinsten
while (a != 1) {
a /= sys2;
 
// berechnet die aktuelle Stelle
b = n / a;
n %= a;
printf("%c", c[b]);
}
printf(" (%d)\n", sys2);
} while(n1 != 0);
}
```
 
hilft dir das weiter?


----------



## FireFlow (22. September 2005)

WTF


```
float myFloat = 1.5;
int dezimalStelle = static_cast<int>(myFloat * 10) % 10;

if( dezimalStelle == 0) {
    // Tu dies und das
}
else {
    // Tu dies und jenes
}
```

Gruß


----------



## domy (24. September 2005)

ja hilft mir sehr weiter vielen dank werds ma versuchen ... und wieder was gelernt =) Danke an alle und gute Nacht...


----------

