public Returnstack convertToBin(String zahl)
 {
     Returnstack result = new Returnstack();
     Returnstack interimresult = convertToDez (zahl);
     result.addStep("In Dezimal umwandeln.\n");
     result+=interimresult;
     result.addStep("Zwischenergebnis: " + interimresult.getResult ());
     interimresult = new Dezimal().convertToBin(interimresult.getResult());
     result.addStep("\n Von Dezimal in Binaer umwandeln.\n");
     result+=interimresult;
     result.setResult(interimresult.getResult());
     return result;
 }
 public Returnstack convertToDez(String zahl)
 {
     Returnstack result = new Returnstack();
     int dezzahl = 0;
     for (int i = 0; i < zahl.Length; i++) {
         int zwergebnis= table(zahl [zahl.Length-1-i])*(int)(Math.Pow(16,i));
         result.addStep((zahl [zahl.Length-1-i]).ToString()+": " + (table(zahl [zahl.Length-1-i])).ToString()+"*"+((int)(Math.Pow(16,i))).ToString() );
         dezzahl += zwergebnis;
     }
     result.addStep("__________________________");
     result.setResult(dezzahl.ToString());
     return result;
 }
Exemple #3
0
        public Returnstack convertToDez(String zahl)
        {
            Returnstack result = new Returnstack ();

            int z = 0;
            for (int i = 0; i < zahl.Length; i++) {
                int help = int.Parse (zahl[zahl.Length-1-i].ToString ());
                z += help * (int)Math.Pow (2, i);
            result.addStep(help+" *2^"+i+" = "+(help * (int)Math.Pow (2, i)));

            }
            result.addStep("__________________________");
            result.setResult(z.ToString());
            return result;
        }
        public Returnstack convertTo(String wert)
        {
            if(!this.analyse (wert)){
                Returnstack result = new Returnstack("Falsche Syntax!\nEs sind nur die Zeichen '0-9' und ',' erlaubt.");
                result.addStep("Analyse ergabe Fehler in der Syntax.");
                return result;
            }
            this.getParts (wert);

            String[] splited = wert.Split (',');
            Returnstack erg = new Dezimal ().convertToBin (splited [0]);
            if (this.parts == 2) {

                Double zwerg = Double.Parse ("0," + splited [1]);
                erg += ",";
                while (zwerg!=1) {
                    zwerg = zwerg * 2;
                    if (zwerg > 1) {
                        zwerg -= 1;
                        erg += "1";
                    } else {
                        if (zwerg == 1) {
                            erg += "1";
                            break;
                        }
                        erg += "0";
                    }
                }
            }

            return erg;
        }
        public Returnstack convertTo(String wert)
        {
            Returnstack result = new Returnstack ();

            if (!this.analyse (wert)) {
                result = new Returnstack ("Falsche Syntax!\nEs sind nur die Zeichen '0-9' und '-' erlaubt.");
                result.addStep ("Analyse ergabe Fehler in der Syntax.");
                return result;
            }

            Returnstack dezimal = new Dezimal ().convertToBin (wert);

            String steps = "";
            for (int i = 0; i< dezimal.getSteps().Length; i++) {
                steps += dezimal.getSteps () [i] + "|";
            }

            if (wert [0] == '-') {
                wert = wert.Remove (0, 1);
                result.setResult ("1" + new Dualoperationen ().invert (dezimal.getResult ()));

            } else {
                result.setResult (dezimal.getResult ());
            }

            result.addStep (steps);
            return result;
        }
        public Returnstack convertFrom(String wert)
        {
            Returnstack result = new Returnstack ();

            if (!this.analyse (wert)) {
                result = new Returnstack ("Falsche Syntax!\nEs sind nur die Zeichen '0-1' erlaubt.");
                result.addStep("Analyse ergabe Fehler in der Syntax.");
                return result;
            }

            String vorzeichen = "";
            if (wert [0] == '1') {
                wert = wert.Remove (0, 1);
                vorzeichen = "-";
            }

            Returnstack dezimal = new Binaer ().convertToDez (new Dualoperationen ().invert (wert));

            String steps = "";
            for (int i = 0; i< dezimal.getSteps().Length; i++) {
                steps += dezimal.getSteps() [i] + "|";
            }

            result.setResult (vorzeichen + dezimal.getResult ());
            result.addStep (steps);
            return result;
        }
        public Returnstack convertToBin(String zahl)
        {
            Returnstack result = new Returnstack ();
            result.addStep ("Schreibe : von rechts(oben) ---> links(unten)\n\n ");
            int dezzahl = int.Parse (zahl);
            zahl = "";
            while (dezzahl!= 0) {
                zahl = dezzahl % 2 + zahl;
                result.addStep (dezzahl + "/ 2 = " + (dezzahl / 2).ToString () + " ---> R: " + (dezzahl % 2).ToString ());
                dezzahl = dezzahl / 2;

            }
            result.addStep ("_________________________");
            result.setResult (zahl);
            return result;
        }
Exemple #8
0
        public Returnstack convertToHex(String zahl)
        {
            String z = "";
            Returnstack result = new Returnstack();
            result.addStep("[Info] Binaerzahlen ließt man von rechts -> links.");
            result.addStep("Vier Stellen einer Binaerzahl ergeben eine Stelle einer Hexzahl. ");
            result.addStep("Berechnung:");
            result.addStep("Hexstelle = binSt[1]*2^0 + binSt[2]*2^1 + binSt[3]*2^2 + binSt[4]*2^3");
            result.addStep("Wenn 9 < Hexstelle < 16 werden die Zahlen durch die Buchstaben A-F ersetzt. ");
            result.addStep("Hexstelle kann nicht <= 16 sein, da 1111(Bin) = 15 (Dez)");
            result.addStep("Oben ist rechts, unten links");
            result.addStep("\n\n");

            for (int i = 0; i < zahl.Length; i+=4) {
                int x = 0;
                String binzahl ="";
                for (int j = 0; j <=3; j++) {
                    if (i + j < zahl.Length) {
                        binzahl= zahl [zahl.Length-1-i - j].ToString()+"*2^"+j.ToString()+" "+binzahl;
                        x += Convert.ToInt32 (zahl [zahl.Length-1-i - j].ToString ()) * (int)Math.Pow (2, j);
                    } else

                        break;
                }
                    String synonym ;
                switch (x) {
                case 10:
                    synonym = "A";
                    break;
                case 11:
                    synonym = "B";
                    break;
                case 12:
                    synonym = "C";
                    break;
                case 13:
                    synonym = "D";
                    break;
                case 14:
                    synonym = "E";
                    break;
                case 15:
                    synonym= "F";
                    break;
                default:
                 synonym = x.ToString ();
                    break;
                }

                z = synonym + z;
                result.addStep(binzahl+" = "+synonym+" ("+x.ToString()+")");
            }

            result.setResult(z);
            return result;
        }
 public Returnstack convertFrom(String wert)
 {
     if(!this.analyse (wert)){
         Returnstack result = new Returnstack("Falsche Syntax!\nEs sind nur die Zeichen '0-1' erlaubt.");
         result.addStep("Analyse ergabe Fehler in der Syntax.");
         return result;
     }
     return new Binaer ().convertToDez (wert);
 }
Exemple #10
0
 public Returnstack convertToHex(String zahl)
 {
     Returnstack result = new Returnstack ();
     result.addStep ("Schreibe : von rechts(unten) ---> links(oben)\n ");
     int dezzahl = int.Parse (zahl);
     String binzahl = "";
     while (dezzahl!= 0) {
         String synonym;
         switch (dezzahl % 16) {
         case 10:
             synonym = "A";
             break;
         case 11:
             synonym = "B";
             break;
         case 12:
             synonym = "C";
             break;
         case 13:
             synonym = "D";
             break;
         case 14:
             synonym = "E";
             break;
         case 15:
             synonym = "F";
             break;
         default:
             synonym = (dezzahl % 16).ToString ();
             break;
         }
         binzahl = synonym + binzahl;
         result.addStep (dezzahl + "/ 16 = " + (dezzahl / 16).ToString () + " ---> R: " + synonym + "(" + (dezzahl % 16).ToString () + ")");
         dezzahl = dezzahl / 16;
     }
     result.addStep ("_________________________");
     result.setResult (binzahl);
     return result;
 }
        public static Returnstack operator +(Returnstack a, String b)
        {
            Returnstack result = new Returnstack ();
            String aresult = a.getResult ();

            if (a == null) {
                aresult = "";
            }

            result.setResult (aresult + b);
            result.addStep (a.getSteps ());

            return result;
        }
        public Returnstack convertFrom(String wert)
        {
            Returnstack result = new Returnstack ();

            if (!this.analyse (wert)) {
                result = new Returnstack ("Falsche Syntax!\nEs sind nur die Zeichen '0-1' erlaubt.");
                result.addStep ("Analyse ergabe Fehler in der Syntax.");
                return result;
            }
            if (wert [0] == '1') {
                wert = wert.Remove (0, 1);
                result += "-";
            }
            result += new Binaer ().convertToDez (wert).getResult ();
            return result;
        }
        public Returnstack convertTo(String wert)
        {
            Returnstack result = new Returnstack ();

            if (!this.analyse (wert)) {
                result = new Returnstack ("Falsche Syntax!\nEs sind nur die Zeichen '0-9' und '-' erlaubt.");
                result.addStep ("Analyse ergabe Fehler in der Syntax.");
                return result;
            }

            if (wert [0] == '-') {
                wert = wert.Remove (0, 1);
                result += "1";
            }
            result += new Dezimal ().convertToBin (wert);
            return result;
        }
        private Returnstack convert(String type)
        {
            Returnstack convert = new Returnstack ();
            convert.addStep ("Prüfen der ausgangs Parameter;");

            if (wert == "") {
                convert.setResult ("Kein Wert");
                return convert;
            }
            if (bias == "") {
                convert.setResult ("Missing Bias");
                return convert;
            }
            if (new Regex ("[^0-9]").Match (this.bias).Success) {
                convert.setResult ("Wrong Syntax");
                return convert;
            }

            switch (type) {

                case "to":
                    if (new Regex ("[^0-9\\-]").Match (this.wert).Success) {
                        convert.setResult ("Wrong Syntax");
                        return convert;
                    }

                    String erg = ((int)(Double.Parse (wert) + Double.Parse (bias))).ToString ();
                    convert = new Dezimal ().convertToBin (erg);
                    return convert;

                case "from":

                    if (new Regex ("[^0-1]").Match (this.wert).Success) {
                        convert.setResult ("Wrong Syntax");
                        return convert;
                    }

                    convert = new Binaer ().convertToDez (wert);
                    convert.setResult (((int)(Double.Parse (convert.getResult ()) - Double.Parse (bias))).ToString ());
                    return convert;
                default :
                    return convert;
            }
        }
        public Returnstack convertFrom(String wert)
        {
            if (!this.analyse (wert)) {
                Returnstack result = new Returnstack ("Falsche Syntax!\nEs sind nur die Zeichen '0-1' erlaubt.");
                result.addStep ("Analyse ergabe Fehler in der Syntax.");
                return result;
            }

            Returnstack convert ;

            if (wert [0] == '1') {
                wert = wert.Remove (0, 1);
                convert = new Binaer ().convertToDez (new Dualoperationen ().invert (wert));
                convert.setResult( "-" + (int.Parse (convert.getResult ()) + 1).ToString ());
            } else {
                convert = new Binaer ().convertToDez (wert);
            }
            return convert;
        }
        public Returnstack convertFrom(String wert)
        {
            if(!this.analyse (wert)){
                Returnstack result = new Returnstack("Falsche Syntax!\nEs sind nur die Zeichen '0-1' und ',' erlaubt.");
                result.addStep("Analyse ergabe Fehler in der Syntax.");
                return result;
            }

            this.getParts (wert);
            String[] splited = wert.Split (',');

            Returnstack part1 = new Binaer ().convertToDez (splited [0]);
            if (this.parts == 2) {
                Returnstack part2 = new Binaer ().convertToDez (splited [1]);
                part2.setResult ((Double.Parse (part2.getResult ()) / (int)Math.Pow (2, splited [1].Length)).ToString ().Split (',') [1]);
                part1 += "," + part2.getResult ();
            } else
                part1 += ",0";
            return part1;
        }
        public Returnstack convertTo(String wert)
        {
            if (!this.analyse (wert)) {
                Returnstack result = new Returnstack ("Falsche Syntax!\nEs sind nur die Zeichen '0-9' und '-' erlaubt.");
                result.addStep ("Analyse ergabe Fehler in der Syntax.");
                return result;
            }

            int vorzeichen = 0;
            if (wert [0] == '-') {
                wert = wert.Remove (0, 1);
                vorzeichen = 1;
            }
            Returnstack convert = new Dezimal ().convertToBin (wert) ;

            if(vorzeichen == 1){
                convert.setResult( "1" + new Dualoperationen ().addieren (new Dualoperationen ().invert (convert.getResult ()), "1"));
            } else {
                convert.setResult( "0" + convert.getResult ());
            }
            return convert;
        }