AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

hex und Integer als Binärzahl adieren

Ein Thema von abi · begonnen am 28. Jun 2004 · letzter Beitrag vom 28. Jun 2004
Antwort Antwort
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#1

hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 12:24
[/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]
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 12:30
Moin abi,

musst Du jetzt das Ergebnis im binären Format ausgeben, oder wird auch schon einer der Werte binär eingelesen?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 12:33
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#4

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 12:33
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
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 12:37
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#6

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 13:24
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] = '0then ergeb := Copy(ergeb, 2, Length(ergeb) - 1);
if ueber[1] = '0then ueber := Copy(ueber, 2, Length(ueber) - 1);
result := ergeb;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 13:29
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#8

Re: hex und Integer als Binärzahl adieren

  Alt 28. Jun 2004, 13:37
Schon mal danke an alle.

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

Danke nochmal.

mfg
abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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