Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi hex und Integer als Binärzahl adieren (https://www.delphipraxis.net/24898-hex-und-integer-als-binaerzahl-adieren.html)

abi 28. Jun 2004 12:24


hex und Integer als Binärzahl adieren
 
[/dp]Hallo
und schon wieder hab ich ein umwandlungs und adier Problem.

Ich habe ein Hex zahl: "404" in Binär.: 100 0000 0100
Dann habe ich noch einen Integer Wert 32: 10 0000

Jetzt soll des nicht wie man am einfachsten denkt andiert werden.
Also nicht 100 0000 0100
+ 10 0000
=100 0010 0100

Nein so brauche ich das nicht.

Sondern es muss so adiert werden mit verschiebung.
So halt 100 0000 0100
+ 1 0000 0
=101 0000 0100

So muss dann mein ergebnis aussehen.

Mein Problem ist, das ich nicht weiss wie ich meine Zahlen in binär umwandle.
Und wie ich meine zweite zahl verschiebe.

Ach und umwandlen will ichs auch wieder und zwar in einen hex wert.

Des ergenis sollte dann 504 sein.

mfg
abi

[edit=Christian Seehase]Doppelpost entfernt. Mfg, Christian Seehase[/edit]

Christian Seehase 28. Jun 2004 12:30

Re: hex und Integer als Binärzahl adieren
 
Moin abi,

musst Du jetzt das Ergebnis im binären Format ausgeben, oder wird auch schon einer der Werte binär eingelesen?

Sharky 28. Jun 2004 12:33

Re: hex und Integer als Binärzahl adieren
 
Hai abi,

warum überhaupt in "binär umrechnen"? Binär ist doch nur eine andere Darstellungsart.
Der Compiler rechnet immer mit Integern. (mal ganz ungenau gesagt).

Es ist also egal wie Du es machst.

Delphi-Quellcode:
var
  i1 : Integer;
  i2 : Integer;
  s1 : String;
  s2 : String;
  hs1 : String;
  hs2 : String;
  ergebniss : Integer;
begin
  i1 := 1;
  i2 := 1;
  ergebniss := i1 + i1;

  s1 := '1';
  s2 := '1;'
  ergegniss := StrToInt (s1) + StrToInt (s2);

  hs1 := '$1';
  hs2 := '$1;'
  ergegniss := StrToInt (hs1) + StrToInt (hs2);
end;
In allen drei Fällen ist das Ergebniss ein Integer mit dem Wert 2.

abi 28. Jun 2004 12:33

Re: hex und Integer als Binärzahl adieren
 
Moin Christian
ne es wird kein Binär wert eingelessen und auch keiner Ausgelesen.

Aber Binär wird des genau so adiert deshalb. Wollte ich des hier umrechnen. Aber wenn du ne besser Idee hast.

Ich hab bestimmt nichts dagegen.

ciao
abi

Stevie 28. Jun 2004 12:37

Re: hex und Integer als Binärzahl adieren
 
1) eine Bitverschiebung nach links entspricht einer Multiplikation mit 2 und umgekehrt
2) die Funktionen für die Typumwandlung findest du in der OH unter selbigem Stichwort

StefanDP 28. Jun 2004 13:24

Re: hex und Integer als Binärzahl adieren
 
Wenn du wirklich was von Dez --> Bin umrechnen willst hab ich dir hir eine funktion die ich mal geschrieben hab:
Delphi-Quellcode:
function DezZuBin(zahl: Int64): String;
begin
  result := '';
  repeat
    if (zahl mod 2) = 0 then
      result := '0' + result
    else
      result := '1' + result;
    zahl := zahl div 2;
  until zahl < 1;
end;
und noch die passende funktion um die binären zu addieren... :-)
Delphi-Quellcode:
function AddierBin(zahl, um: String): String;
var
  n : Integer;
  ueber: String;
  ergeb: String;
begin
while Length(zahl) < Length(um) do
  zahl := '0' + zahl;
zahl := '0' + zahl; // 10 -> 010

while Length(um) < Length(zahl) do
  um := '0' + um;

SetLength(ueber,Length(zahl));
for n := 1 to Length(ueber) do
  ueber[n] := '0';

SetLength(ergeb,Length(zahl));
// XOR
for n := length(zahl) downto 1 do
  case (StrToInt(zahl[n]) + StrToInt(um[n]) + StrToInt(ueber[n])) of
    0: ergeb[n] := '0';
    1: ergeb[n] := '1';
    2: begin
         ueber[n - 1] := '1';
         ergeb[n] := '0';
       end;
    3: begin
         ueber[n - 1] := '1';
         ergeb[n] := '1';
       end;
  end;

if ergeb[1] = '0' then ergeb := Copy(ergeb, 2, Length(ergeb) - 1);
if ueber[1] = '0' then ueber := Copy(ueber, 2, Length(ueber) - 1);
result := ergeb;
end;

Sharky 28. Jun 2004 13:29

Re: hex und Integer als Binärzahl adieren
 
Zitat:

Zitat von StefanDP
Wenn du wirklich was von Dez --> Bin umrechnen willst ...

Nur noch einmal als Anmerkung ;-) Es ist keine Umrechnung sondern nur die Dartstellung eines Zahlenwertes.

abi 28. Jun 2004 13:37

Re: hex und Integer als Binärzahl adieren
 
Schon mal danke an alle.

Ich werde des wie stevie gesagt hat mit einer multiplication machen.

Danke nochmal.

mfg
abi


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.

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