Autor Beitrag
axis
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 20.05.05 23:41 
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 user profile iconmatze: Topic aus Neue Einträge / Hinweise / etc. verschoben am So 22.05.2005 um 09:56
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Sa 21.05.05 00:02 
user profile iconaxis 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: 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!

ausblenden volle Höhe 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
OIncProcs.pas (Zeile ca. 1700)

Cu
Neo
axis Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 21.05.05 21:11 
Einfachste Möglichkeit:

Zahl --> BCD:
ausblenden Delphi-Quelltext
1:
BCDConverted := StrToInt('$'+ZahlStr);					


BCD --> Zahl:
ausblenden Delphi-Quelltext
1:
ZahlStr := IntToHex(BCDConverted, 1);					

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
axis Threadstarter
Hält's aus hier
Beiträge: 4



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