![]() |
Dezimalzahlen ins Binärsystem
Hey Leute ich wollte ein Programm machen als freiwillige Zusatzhausaufgabe. Und da soll am Ende folgendermaßen aussehen: Man soll in ein Editfeld eine Zahl eingeben. Und diese Zahl soll dann ins Binärsystem umgewandelt werden.
Und zwar sind unter dem Editfeld 8 Checkboxen. Das Programm soll entsprechend der Zahl Kreuze in die Boxen setzen. Beispiel: Benutzer gibt 200 ins Editfeld ein. Die Boxen sind von links nach rechts immer weniger wert. 128,64,32,16,8,4,2,1 x x / / x Weil von 200 werden erst 128 angekreuzt, dann bleiben ja noch 72 übrig. Dann muss das Programm gucken in 72 passt 64 auch noch rein. Danach bleibt ja noch 8 übrig, dann guckt das Programm okay 32 und 16 gehen nicht, da soll kein Kreuz hin. Aber 8 sind übrig perfekt. Da kommt dann noch ein kreuz hin. Und die Anordnung kommt halt immer auf die Zahl an. Und das sollen wir irgendwie mit mod und dif machen aber ich weiß nicht genau wie meine diese Funktion anwendet. DAs ist ja immer etwas mit Rest. Ich habe auf jeden Fall eine Variable namens Dezimalzahl. Und ich wollte fragen wie ich das anfangen soll, damit das Programm funktioniert. Ich bräuchte eine kleine Starthilfe. Würde mich sehr freuen ! Liebe Grüße Alex :) |
AW: Dezimalzahlen ins Binärsystem
Das Prinzip ist. Aber es ist deine Aufgabe. Starthilfe hast du nun. Benutze ein logisches UND (in Delphi and).
Code:
if(zahl and $01)then // Box für Bit 0
if(zahl and $02)then // Box für Bit 1 if(zahl and $04)then // Box für Bit 2 if(zahl and $08)then // Box für Bit 3 if(zahl and $10)then // Box für Bit 4 |
AW: Dezimalzahlen ins Binärsystem
Mod und Div brauchste doch gar nisch?
Hier mal ein kleiner Pseudocode, wie das Umwandeln für den Anfang aussehen könnte:
Code:
//Edit: War mal wieder jemand schneller ... Aber na gut, sind ja auch 2 unterscheidliche Ansätze :stupid:
LIES Editfeld AUS => VARIABLE "s"
WANDLE "s" MITTELS "IntToStr" IN "Integer" UM => VARIABLE "i" WENN "i" >= 128 DANN SETZE höchstes bit (msb) ZIEHE 128 VON "i" AB WENN "i" >= 64 DANN SETZE zweithöchstes bit ZIEHE 64 VON "i" AB ... |
AW: Dezimalzahlen ins Binärsystem
aber wir müssen das mit mod und dif machen das ist die letzte vorbereitungsmöglichkeit für die am montag anstehende Klausur, weil wir das mit dem, was ihr vorgeschlagen habt, noch nicht hatten =(
|
AW: Dezimalzahlen ins Binärsystem
Zitat:
|
AW: Dezimalzahlen ins Binärsystem
Zitat:
Code:
:gruebel:
WENN i div 128 = 1 DANN
SETZE BOX i = i mod 128 |
AW: Dezimalzahlen ins Binärsystem
Ich gebe dir mal einen Ansatz/Beispiel:
10 : 2 = 5 Rest 0 5 : 2 = 2 Rest 1 2 : 2 = 1 Rest 0 1 : 2 = 0 Rest 1 Die Reste von oben nach unten ergeben dann die Binärzahl: 1010 5 div 2 = 2 5 mod 2 = 1 Damit lässt sich denke ich mal was anfangen ;) |
AW: Dezimalzahlen ins Binärsystem
hmm also soll ich schreiben
Delphi-Quellcode:
und muss das nicht irgendwas mit boolean rein oder so? das sagt mein delphi und mein lehrer hat es auch erwähnt, aber ich wusste nich, was das bedeutet. ich bin echt ziemlich blöd
if dezimalzahl div128=1
then checkbox128.check; |
AW: Dezimalzahlen ins Binärsystem
Leuts, ich hab das Gefühl, daß hier schon ein paar Grundlagen fehlen. Es geht ja hier mal nicht nur um die Darstellungsweise.
Aber nochmal, es ist deine Aufgabe. Wenn dein Lehrer in der Klausur was abgewandeltes fragt, hilft dir die exakte Lösung eines spezifischen Problems auch nicht mehr. Also versuch doch mal es wenigstens zu verstehen ... okay? Zitat:
Was weißt du über Dezimalzahlen, Binärzahlen und Hexadezimalzahlen und deren Zusammenhänge? Hier mal eine kleine, vielleicht überraschende, Eigenschaft:
Code:
Erkennst du das Muster? Siehst du, daß eine Hexadezimalstelle immer exakt 4 Bits entspricht (also Binärstellen)? ... siehste was bei den markierten Zahlen?
dez hex bin
0 00 0000 1 01 0001 * 2 02 0010 * 3 03 0011 4 04 0100 * 5 05 0101 6 06 0110 7 07 0111 8 08 1000 * 9 09 1001 10 0A 1010 11 0B 1011 12 0C 1100 13 0D 1101 14 0E 1110 15 0F 1111 ----------------- 16 10 10000 * Nun gebe ich dir eine Hexadezimalzahl. Wie schnell kannst du die in eine Binärzahl umwandeln (ohne Taschenrechner) und wie hast du es gemacht? Kannst du den Zusammenhang mit dem Code oben erkennen? Und den mit dem Vorkommen von 128 in den Codebeispielen? |
AW: Dezimalzahlen ins Binärsystem
2 Möglichkeiten:
Delphi-Quellcode:
Oder eleganter:
if dezimalzahl div 128 = 1 then
checkbox128.checked := true else checkbox128.checked := false;
Delphi-Quellcode:
checkbox128.checked := dezimalzahl div 128 = 1;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz