Hallo, Ich hoffe ihr könnt mir helfen. Habe drei Variablen, test1, test2, test3 alles byte variablen Nun habe ich folgenden code: Test2=2 Test3=3 Test1=test2+test3 Die variable test1 hat nun den inhalt 5 was ja auch richtig ist, gibt es aber auch eine möglichkeit das die zahlen NICHT Addiert werden und so der inhalt 23 wäre?
Danke für deine antwort Aber das wäre ja wieder rechnen weil 10*2 sind 20 + 3 sind 23 das ist zwar das ergebniss was ich haben will, aber das war ja nur ein beispiel, davon abgesehen das bascom nur eine operation pro zeile kann :(
23 ist nur ein Beispiel? Und wie sehen die anderen Beispiele aus? WAS ist das eigentliche Problem? Die Zahlen 2 und 3 nicht zu Addieren und 23 zu bekommen, das ginge auch so: Test1 = 23
Stefan schrieb: > Danke für deine antwort > > Aber das wäre ja wieder rechnen Ja, so ist das nun mal. Was dir vorschwebt geht nur in einem Sonderfall, nämlich wenn du binär arbeitest. Dann dann kann man die Multiplikation durch eine Schiebeoperation ersetzen. Was für uns im Dezimalsystem besonders leicht ist, ist für einen Computer, der nicht mit dem Dezimalsystem arbeitet ein Kraftakt. Aber keine Sorge. Denn wenn Computer etwas richtig gut können, dann ist das rechnen. Die können das auf jeden Fall viel schneller als wir Menschen.
vielelicht habe ich mich unverständlich ausgedrückt in variable test2 und test3 werden zahlen geschrieben zwischen 1 und 9 beide variablen sollen dann in varibale test1 geschrieben werden dabei aber eben nicht addiert werdenn, hier ien paar beispiele wie es aussehen sollte: test2=3 test3=1 dann soll in test1 31 oder test2=9 test3=6 dann soll in test1 96 wüsste nicht wie ich das sonst beschreiben soll :(
Test1 = 10*Test2 + Test3 würde immer noch auf jedes deiner Beispiele passen ...
Stefan schrieb: > wüsste nicht wie ich das sonst beschreiben soll :( und selbst wenn deine beiden Einzelstellen 7 und 2 lauten, gilt immer noch, dass 7 * 10 + 2 die 72 ergeben, die du suchst. Da steckt eine tiefere Erkentnis dahinter: Genau so ist nämlich unser Zahlensystem aufgebaut. Genau darum nennen wir die eine Stelle einer 2 stelligen Zahl die 'Zehner' und die andere die 'Einer'. WEil sich nämlich eine 2 stellige Zahl immer nach dem Muster Zehner * 10 + Einer * 1 aufbaut. In 83 ist 8 die Zehner-Stelle und 3 die Einer-Stelle. Eben weil 8 * 10 + 3 * 1 die 83 ergeben. Und in einer 3-stelligen Zahl heisst die 3.te Stelle die 'Hunderter', weil gilt Zahl = Hunderter * 100 + Zehner * 10 + Einer * 1 564 = 5 * 100 + 6 * 10 + 4 * 1 und wenn man das ein bischen anders aufschreibt 564 = 5 * 100 + 6 * 10 + 4 * 1 dann fällt da was auf. Die Wertigkeit jeder weiteren Stelle links, nimmt immer um das 10-fache zu. Die Ziffern 0 bis 9 sind immer dieselben, aber je nach dem an welcher Stelle der Zahl die Ziffern auftauchen haben sie eine andere Wertigkeit (1, 10, 100, ...) Und genau deshalb heißt unser System das Dezimalsystem. Denn Dezimal kommt aus dem Latein, decem. Und rate mal was das im ollen Latein heißt? Genau. Zehn. Und es ist ein Stellenwertsystem, weil die Wertigkeit einer Ziffer davon abhängt, wo in der Zahl (an welcher Stelle) sie auftaucht. Und warum wir die nächste Stelle die 'Tausender' nennen, nun das sollte jetzt nicht mehr schwer sein :-) Das ist das System, das wir Menschen verwenden. Hauptsächlich aus historischen Gründen. Für uns ist die 10 irgendwie eine 'magische' Zahl. Wir haben 10 Finger, wir haben 10 Zehen. Aber ein Computer verwendet ein Dualsystem (oder Binärsystem). Das was für uns die 10 ist, ist für einen Computer die 2 (Latein: duo = zwei). 10 ist aber keine ganze 2-er Potenz. Daher funktioniert das, was im 10-er System so leicht aussieht, nämlich das Bilden einer Zahl indem man die einzelnen Ziffern einfach aneinanderhängt, im 2-er System nicht (bzw. ist das Ergebnis eben ein anderes als im 10-er System). Und umgekehrt.
Stefan: Bitte lies Dich einmal in das Thema "Zahlendarstellung" ein. Wie von Karl-Heinz bereits ausgeführt, ist das, was Du suchst, mit Dezimalzahlen auf einem (binären) Computersystem nicht machbar. Mit Binärzahlen ginge es; z. B.: 0110 und 1100 können miteinander verknüpft werden durch Nach-Links-Verschieben des ersten Nibbles um vier Stellen und anschließende bitweise ODER-Verknüpfung (bzw. Addition). Auch mit Strings funktioniert es auf höherer Abstraktionsebene, z. B. können die Strings "a" und "b" zu "ab" verknüpft werden. Auf Maschinensprache-Ebene entspricht das jedoch dem Aneinanderhängen von zwei Bytes im Speicherbereich (d. h. Umkopieren). Jetzt wird es interessant: Der Buchstabe "a" entspricht dem ASCII-Code 97 im Dezimalsystem und somit dem Wert 01100001 im Binärsystem - das ist letztendlich das, was im Speicher abgelegt ist. Ob nun der Speicherinhalt "01100001" als Integerzahl oder als (Teil eines) String interpretiert wird, hängt vom Programm ab - der Mikrocontroller weiß es zunächst einmal nicht; es wird festgelegt durch die Programmierung bzw. was das Programm damit macht.
Vielleicht soll es BCD-Darstellung werden? Das wäre dann: test2*16 + test3; bzw: test2<<4 | test3; //rein logisch ohne zu "rechnen" ;-)
Karl Heinz Buchegger schrieb: > Denn wenn Computer etwas richtig gut können, dann ist > das rechnen. Klar, denn mein China 10 Cent Rechner macht aus 1/999999*999999=0.99997 ob da die Sattelitenverbindung zu den Abakuschinesen der Firma 'nen Übertragungsfehler hat ?
Was uns zu der Frage führt, was in aller Welt Dich hat annehmen lassen, das das Ding ein Rechner ist? Weiter: Was lässt Dich annehmen, das etwas, worauf ein Chinese Rechner schreibt tatsächlich ein Rechner ist? Mit dem gleichen Recht könnte ich eine auf Papier gemalte "Null" als Rechner bezeichnen. Es kann absolut jede Zahl, ob integer, real, oder komplex mit Null multiplizieren und das ohne jeden Fehler.
H.joachim Seifert schrieb: > Vielleicht soll es BCD-Darstellung werden? Dann sollte es aber nicht 23, 31 und 96 heißen, sondern 0x23, 0x31 und 0x96. Aber das könnte man erst wissen, wenn man weiß, was denn Geheimnisvolles mit dieser aufwendig ermittelten Zahl passieren soll...
Warten wir ab, es wird sich aufklären :-) Aber ich denke, ich liege richtig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.