Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Dezimalzahlen ins Binärsystem (https://www.delphipraxis.net/155710-dezimalzahlen-ins-binaersystem.html)

NewDelphiBenutzer 4. Nov 2010 14:52

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 :)

Assarbad 4. Nov 2010 14:55

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

implementation 4. Nov 2010 14:58

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:
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

...
//Edit: War mal wieder jemand schneller ... Aber na gut, sind ja auch 2 unterscheidliche Ansätze :stupid:

NewDelphiBenutzer 4. Nov 2010 15:00

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 =(

Assarbad 4. Nov 2010 15:00

AW: Dezimalzahlen ins Binärsystem
 
Zitat:

Zitat von implementation (Beitrag 1059650)
//Edit: War mal wieder jemand schneller ... Aber na gut, sind ja auch 2 unterscheidliche Ansätze :stupid:

Allerdings. Und deiner zeigt, finde ich, sehr gut eine weitere Eigenschaft von Binärzahlen. :thumb:

implementation 4. Nov 2010 15:02

AW: Dezimalzahlen ins Binärsystem
 
Zitat:

Zitat von NewDelphiBenutzer
aber wir müssen das mit mod und dif machen

Hmm, okay. Dann benutzen wir statt des Abziehens einfach Mod und statt des Testens auf GrößerGleich eben Div :stupid:
Code:
WENN i div 128 = 1 DANN
  SETZE BOX
  i = i mod 128
:gruebel:

Neutral General 4. Nov 2010 15:02

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 ;)

NewDelphiBenutzer 4. Nov 2010 15:13

AW: Dezimalzahlen ins Binärsystem
 
hmm also soll ich schreiben
Delphi-Quellcode:
if dezimalzahl div128=1
          then checkbox128.check;
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

Assarbad 4. Nov 2010 15:14

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:

Zitat von NewDelphiBenutzer (Beitrag 1059652)
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 =(

Okay, da du was lernen und begreifen sollst, versuchen wir doch mal was anderes.

Was weißt du über Dezimalzahlen, Binärzahlen und Hexadezimalzahlen und deren Zusammenhänge?
Hier mal eine kleine, vielleicht überraschende, Eigenschaft:

Code:
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 *
Erkennst du das Muster? Siehst du, daß eine Hexadezimalstelle immer exakt 4 Bits entspricht (also Binärstellen)? ... siehste was bei den markierten Zahlen?

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?

DeddyH 4. Nov 2010 15:15

AW: Dezimalzahlen ins Binärsystem
 
2 Möglichkeiten:
Delphi-Quellcode:
if dezimalzahl div 128 = 1 then
  checkbox128.checked := true
else
  checkbox128.checked := false;
Oder eleganter:
Delphi-Quellcode:
checkbox128.checked := dezimalzahl div 128 = 1;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz