Entwickler-Ecke
Sonstiges (Delphi) - eine dezimalzahl in eine BCD zahl umwandeln
axis - Fr 20.05.05 23:41
Titel: eine dezimalzahl in eine BCD zahl umwandeln
hi leute
ich hab da ein problem ich will eine dezimalzahl in eine BCD Zahl umwandeln und aus geben
also ich will z.B. 239 in 0010 0011 1001 umwandeln und ausgeben aber wie kann ich das machen??????
ich bitte vielmals um hilfe
mfg
axis
Moderiert von
matze: Topic aus Neue Einträge / Hinweise / etc. verschoben am So 22.05.2005 um 09:56
JRegier - Sa 21.05.05 00:02
Titel: Re: eine dezimalzahl in eine BCD zahl umwandeln
axis hat folgendes geschrieben: |
hi leute
ich hab da ein problem ich will eine dezimalzahl in eine BCD Zahl umwandeln und aus geben
also ich will z.B. 239 in 0010 0011 1001 umwandeln und ausgeben aber wie kann ich das machen??????
ich bitte vielmals um hilfe
mfg
axis |
Hallo, ich hab das mal bei meiner Informatik-Ausbildung gelernt ich weiß nicht mehr wie wir das so berechnet hatten ich werd mal nachsehen! Also jede stelle im BCD ist der reihe nach von rechts nach links 2² 1² 0² usw. also zahlen reihen jeweils hoch zwei!
Jetzt weiß ich von Assembler das man mit Shifting die Bits einer Zahl schieben und im
"Carry Flag" glaub ich hieß der jedenfals in einem der Flags prüfen/auslesen ist das eine 0 oder 1;
NeoInDerMATRIX - Sa 21.05.05 00:26
Hi,
also BCD ist nicht binary zahlen format, sondern ein sehr altes format um zahlen zu speichern! Wo bei das auch eigentlich kein richtiges Zahlenformat ist, sondern nur eine art um Zahlen zu übergeben. Zum Beispiel liefert das BIOS beim abfragen der Aktuellen Zeit die Zeit im BCD format zurück.
Im BCD format werden in einem Byte zwei Nibble's gespeichert. Sprich die BCD zahl
$11 entspricht den zwei dezimal zahlen 1, 1!
Das was du meinst ist das binary zahlen system, das ganz einfach gebildet werden kann!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| Function ByteToBinaryStr(AValue: Byte): String; Var B: PByte; Begin AValue := AValue And $FF; Result := StringOfChar('0', 8); B := @Byte(Result[8]); While AValue <> 0 Do Begin Inc(B^, AValue And 1); AValue := AValue Shr 1; Dec(B); End; End;
Function WordToBinaryStr(AValue: Word): String; Var B: PByte; Begin AValue := AValue And $FFFF; Result := StringOfChar('0', 16); B := @Byte(Result[16]); While AValue <> 0 Do Begin Inc(B^, AValue And 1); AValue := AValue Shr 1; Dec(B); End; End;
Function DWordToBinaryStr(AValue: DWORD): String; Var B: PByte; Begin Result := StringOfChar('0', 32); B := @Byte(Result[32]); While AValue <> 0 Do Begin Inc(B^, AValue And 1); AValue := AValue Shr 1; Dec(B); End; End; |
Omorphia source [
http://www.omorphia.de.vu]
OIncProcs.pas (Zeile ca. 1700) [
http://cvs.sourceforge.net/viewcvs.py/omorphia/omorphia/library/source/OIncProcs.pas?rev=1.81&view=markup]
Cu
Neo
axis - Sa 21.05.05 20:40
ne ich glaube ich habe meine frage nicht verständlich genug gestellt ich will wissen wie ich die dezimalzahl so einlesen kann damit ich sie als bcd zahl wieder ausgeben kann
z.B.: 287 wie kann ich diese zahl einlesen damit ich sie wieder so ausgeben kann:
0010 1000 0111????
mfg
axis
BenBE - Sa 21.05.05 21:11
Einfachste Möglichkeit:
Zahl --> BCD:
Delphi-Quelltext
1:
| BCDConverted := StrToInt('$'+ZahlStr); |
BCD --> Zahl:
Delphi-Quelltext
1:
| ZahlStr := IntToHex(BCDConverted, 1); |
axis - So 22.05.05 02:06
so und wie soll ich das jetzt in mein programm einordnen ich bin fast ein noob ich weiss nicht wirklich was ich damit anfangen soll
kann mir das bitte mal einer detailierter erklären und einfacher ?????
mfg
axis
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!