Zahlensysteme umrechnen:



  • Der User soll ein Zahlen-Array im Char Format eingeben:

    char a[1000]; //Das ist der String im 10-er-System
    printf("\nGeben Sie eine Zahl ein...");
    gets(a);
    

    Dieser String ist dann im Dezimal(10)-System gespeichert. Giebt es einen Algoritmus um diesen "String" in einen "String" des 256-er-System umzuwandeln.
    Das Ergebnis soll auf eine Variable des f. Typs gespeichert werden:

    char b[1000]; //Das ist das Ergebnis im 256-System
    printf("Das entspricht im 246-er-System dem Wert\n");
    puts(b);
    

    Wer irgendeine Idee hat soll bitte antworten 😉



  • Wie man eine Zahl in ein anderes Zahlensystem umrechnet lernt man doch schon in der 5. oder 6. Klasse, falls du vergessen hast wie es geht hilft dir sicher eine Suchmaschiene deiner Wahl (z.B. google) weiter . Wo liegt denn dein Problem? Du kannst die Zahl auch erst ins binärsystem umrechnen (falls das einfacher ist) und dann 8 zeichen zu einem zusammenfassen.



  • chille07 schrieb:

    Dieser String ist dann im Dezimal(10)-System gespeichert. Giebt es einen Algoritmus um diesen "String" in einen "String" des 256-er-System umzuwandeln.
    Das Ergebnis soll auf eine Variable des f. Typs gespeichert werden:

    char b[1000]; //Das ist das Ergebnis im 256-System
    printf("Das entspricht im 246-er-System dem Wert\n");
    puts(b);
    

    Wer irgendeine Idee hat soll bitte antworten 😉

    idee: beim output nicht das 246er, sondern das 256er zahlensystem verwenden 😃

    frage: wtf braucht sowas?

    ansatz: hmm... einfach die elemente entsprechend aufaddieren, das ergebnis in einer ariablen speichern. dann einfach ein alphabet mit 230 buchstaben suchen und eine ausgabe programmieren.

    im übrigen: ja, einen solchen algorithmus gibt es- gaaanz sicher.



  • Abbadon schrieb:

    Wie man eine Zahl in ein anderes Zahlensystem umrechnet lernt man doch schon in der 5. oder 6. Klasse

    watt? wer bist du denn?!?



  • Das man das schon in der 5. Klasse lernt, weiss ich:
    Ich komme in 2 Monaten in die 6. Klasse!!!

    Und umrechnen kann ich das auch, jedoch nur mit integerwerten!

    OK ich verwende statt 256(char)er ein 2(bool)er System
    dh:
    Ich habe im Programm unten eine int-Zahl in einen bool-Array umgewandelt.
    aber ich kann keinen Dezimalstellenarray in einen bool-Array zerlegen.

    PS.: ich brauche diese Umrechnung, da der Typ " Long Int" einen zu niedrigen Bereich hat.

    Ich habe ein Programm, welches mit sehr großen Zahlen rechnen kann. Aber: Man muss die Zahlen leider im Binär, bzw. 256-System eingeben, was jedoch nicht gut ist!!!
    dh.: ich brauche die Umrechnung von 10er-System(Array) ins 2er oder 256er System!

    Bsp:

    char a[1000]="12345";
    BOOL b[1000];
    umrechnen(a,b);
    ausgabe(a,b);
    

    Die Umrechnung mit einem

    int a;
    

    ins 2-er-System wäre:

    #include<conio.h>
    #include<stdio.h>
    
    void main()
    {
    	int a;
    	int i=0;
    	bool b[1000];
    	printf("\nBitte Zahl eingeben");//Eingabe
    	scanf("%d",&a);
    	printf("\n\n");
    
    	do//Berechnung
    	{
    		b[i]=a%2;
    		a=a/2;
    		i++;
    	}
    	while(a>0);
    
    	for(int j=i-1;j>=0;j--) //Ausgabe
    	{
    		printf("%d",b[j]);
    	}
    }
    

    Frage: Wie rechnet man dann Ziffern(Array!) in ein Anderes System um?



  • Das geht eigentlich genauso, du musst nur die operatoren /2 und %2 selbst schreiben.

    also z.B
    Pseudocode:

    int mod2(dezimal)
    {
      return dezimal[letzte Ziffer]%2;
    }
    

    div2 ist dann nicht ganz so einfach aber wenn man weiss wie man schriftlich dividiert sollte das kein Problem sein.



  • nun es sieht mir so aus als müsstest du deine routinen so umschreiben das sie mit einer bliebigen basis funktionieren, denn du brauchst die um die zahlen umzurechenen (wenn ihr ein system kennt mit dem man beliebig große zahlen umrechnen kann ohne das man mit sehr großen zahlen rechnen muss raus damit!!). naja und dann gehst du halt so vor wie dus gelernt hast...

    aber du weißt schon dass es besser ist wenn die basis 2^16 ist ne?

    man braucht zumindest eine modulo routine für große zahlen


Anmelden zum Antworten