Autor Beitrag
joker36
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 22.09.08 14:08 
So, Hallo erstmal :)

Ich habe z.Z. 2 Probleme wo ich absolut nicht hintersteige, Ich soll einen Umwandler Programmieren der mir aus Dezimal Zahlen mit Nachkommastellen eine Binärzahl macht und umgekehrt sowie einen Konverter der mir aus Dezimalzahlen Hexadezimalzahlen sowie BCD Zahlen in Tetradendarstellung macht.

Könnte mir jemand erklären wie das Überhaupt geht bzw eine Info Seite posten da sowas in meinem Info Unterricht nie besprochen wurde.

Wer natührlich mit einem Programmtext dienen kann ist auch herzlich Wilkommen :D
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 22.09.08 14:40 
Hallo!

Sorry, wenn das vielleicht etwas forsch wirkt, aber wirf erstmal Google, Wikipedia und Co an. Wir machen hier keine Hausaufgaben - und so wie es aussieht, hast du ja noch nicht einmal gesucht. Das ist hier gar nicht gerne gesehen.

AXMD
joker36 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 22.09.08 15:28 
Ich habe ja auch schon sehr viel info Material aber den Zusammenhang dazwischen Versteht ich absolut nicht.

z.B. woher kriege ich beim BCD Umrechnen den Maßstabsfaktor und die Basis und was hat es mit den Mantissenstellen zu tun?

Und zur Umrechnung der Dezimal-Kommata Zahlen ist halt noch die frage, wie kriege ich das Programm dazu die Zahlen zu trennen? Also Ganzzahlige und Nachkommastellen?
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Mo 22.09.08 15:59 
Von welchem BCD redest du?
Für mich ist BCD-Code 8-4-2-1-Code, und da habe ich keinen Maßstabsfaktor und sowas ;)

Und die Zahlen trennen ist auch nicht das Problem, denk mal bisschen nach...

Jetzt ne Interessefrage meinerseits:
Wie sehen Binärzahlen mit Nachkommastellen aus?
Also 8,5 zum Beispiel?
1000,101?

_________________
1405006117752879898543142606244511569936384000000000.
seepy
Hält's aus hier
Beiträge: 10

Debian 4.0r4

BeitragVerfasst: Mo 22.09.08 16:37 
nein. 8,5 sind 1000,1 :=)
joker36 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 22.09.08 16:43 
Ich scann morgen einfach mal die "Infos" ein, vll könnt ihr mir dann ja genauer Helfen.
Aber das mit der Trennung, dazu will mir einfach kein Ansatz einfallen.
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Mo 22.09.08 21:25 
wieso ist 8,5 denn 1000,1?
das versteh ich nicht so recht...

_________________
1405006117752879898543142606244511569936384000000000.
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.09.08 21:28 
ich gluab wir stimmen über das 8,5 1000,101 ist!Windows sagt das. :P
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Mo 22.09.08 21:41 
Dann isses doch falsch :D

_________________
1405006117752879898543142606244511569936384000000000.
seepy
Hält's aus hier
Beiträge: 10

Debian 4.0r4

BeitragVerfasst: Di 23.09.08 07:17 
11,625 ->
11:2 = 5 Rest 1
5:2 = 2 Rest 1
2:2 = 1 Rest 0
1:2 = 0 Rest 1

0,625*2 = 1,25
0,25 *2 = 0,5
0,5 *2 = 1,0

-> 1011,101 (1*2^-1 + 0*2^-2 + 1*2^-3 = 0,625)


8,5 ->
8:2 = 4 Rest 0
4:2 = 2 Rest 0
2:2 = 1 Rest 0
1:2 = 0 Rest 1

0,5*2 = 1 Rest 0
0 *2 = 0 Rest 0

-> 1000,10000000000000....


Bye...
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Di 23.09.08 12:25 
Also entweder ist dein Material denkbar schlecht, dann musst dus hier auch nicht online stellen oder du setzt deine Prioritäten falsch. In der Zeit, die du zum einscannen brauchst, hättest du allgemeine Zahlendarstellung schon lange gepeilt. nämlich:
dezimal:
123,5 = 1*10^2 + 2*10^1 + 3*10^0 + 5*10^-1
binär:
1001,1 = 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 + 1*2^-1
deshalb sollte user profile iconseepy mit seiner Behauptung recht haben.

Desweiteren solltest du dich nochmal ausführlich mit Grundlagen beschäftigen, wenn du nicht weißt, wie man die Ganzzahl von der Fraktion trennt! In beiden denkbaren fällen als string oder float, double oder was ihr benutzt ist das nicht schwer.
Ich würde dir vorschlagen du baust erstmal binär zu dezimal, das geht den meisten leichter von der Hand. Und zwar genau so wie oben geschrieben rechnet man das. Und ob du jetzt trickst und den Computer mit seiner Spezialität nämlich echten Binärzahlen fütterst und dann floattostr benutzt oder eine "schriftliche" Addition und Multiplikation, die du in deiner dritten Klasse gelernt hast, implementierst ist im Endeffekt egal.

Für dezimal zu binär von bsp 7 musst du immer gucken welche Potenzen noch reinpassen und zwar am besten von der höchsten ausgehend:

2^3=8 ist zu groß für 7also 0
2^2=4 passt in 7 rein also 1 und dann 7-4=3 als neue Zahl
2^1=2 passt in 3 rein also 1 und dann 3-2=1 als neue Zahl
2^0=1 passt in 1 rein also 1 und dann 1-1=0 => Ende der Nachkommateil ist identisch
7 zu binär ist also 0111 oder einfach 111

binär zu hex ist trivial: einfach immer 4 Bit der binärzahl zu was zusammenfassen. BCD ist auch einfach und zwar Codierst du immer die Ziffern 0-9 binär. Da das nur 10 sind also kleiner als 16 aber mehr als 8 verwendest du genau 4 Bit für jeweils eine Ziffer. Du wirst feststellen, dass das ganz ähnlich der normalen Codierung der Zeichen im string ist (nennt sich ascii) da stehen die Ziffern auch alle hintereinander, allerdings die Null eben nicht an erster Stelle in der Tabelle. string to BCD wäre also ein Abziehen von einem Offset vom Ordinalwert der jeweiligen Ziffer + plus packen von jeweils zwei Ziffern in 1 byte.
joker36 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 23.09.08 17:55 
Aktuell ist das mein Ansatz, bitte nicht Steinigen, die Aufgaben die wir im Unterricht lösen benutzt unser Lehrer als Aufgaben für die nächste Stufe da er Delphi selber nicht so toll berherrscht (Kein Witz!)

Zitat:

g:=0;
Repeat
BEGIN
doep[18+g]:=doep[17+g] mod 2;
doep[19+g]:=doep[17+g] div 2;
g:=g+2;
END;
Until g=20;


Das ist meine Schleife, soll 10 Runden drehen da ja maximal 10 Dualzahl-Stellen bei einer 3 Stelligen Dezimal-Zahl angezeigt werden.
Nur es klappt mal wieder hinten und vorne nicht -.-
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 23.09.08 18:55 
user profile iconjoker36 hat folgendes geschrieben:
Nur es klappt mal wieder hinten und vorne nicht -.-


und was ist denn hinten und vorne? wo liegt das problem?
joker36 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 23.09.08 22:05 
Das ich Anstatt eine Dualzahl eine, relativ große Dezimalzahl kriege.
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: Mi 24.09.08 06:31 
Gugge mal hier, vielleicht hilft das weiter!

Es ist nicht wirklich schwer, aber Du musst das vielleicht erst mal auf einem Blatt Papier von Hand durchführen, um eine Lösung zu erarbeiten.

_________________
Es gibt keine Probleme - nur Lösungen!
joker36 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 24.09.08 16:38 
Ich sage mal Danke für die ganze Hilfe, aber auch den neu geposteten Link kann ich nicht ganz Nachvollziehen.
Ich glaube mir fehlen einfach Grundkenntnisse die nicht Vermittelt wurden.
Da ich sowieso das Problem habe nur auf bekannte Prozeduren/Befehle zurückgreifen zu dürfen lass ich es.
Aber trotzdem Danke für eure Hilfe