Autor Beitrag
Skywalker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 05.12.02 16:13 
Hi Leute,

hab mal wieder ne Frage.

Ist es möglich eine Integer-Zahl ins Binärsystem umzuwandeln?

D.h. Integer = 8 Binär = 00001000

_________________
CU

Skywalker

:nixweiss:
Nobody is perfect!!!!!
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Do 05.12.02 16:32 
aber sicher doch!

ich nehme mal stark an du willst lediglich einen string, der den binär-wert enthält...

das funktioniert nach folgendem schema:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  i    : Integer;
  k   : Byte;
  s   : String;
begin
  s := '';
  i := <die zahl die umgewandelt werden soll>;
  k := 0;
  while (i <> 0) do
  begin
    i := i / 2;
    k := i MOD 2;
    s := chr( k + '0' ) + s;
  end;
  writeln( s );
    // s kann jetzt weiterverwendet werden...
end.


übernehme keine garantie für fehlerfreie funktion dieses quellcodes! er funktioniert nur unter der annahme, dass du POSITIVE integer-werte umwandeln willst, bei negativen müsstest du die noch auf positive mappen, will ich aber jetzt nicht ausführen, um nicht unnötig zu verwirren...

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 05.12.02 17:57 
Indeterminatus hat folgendes geschrieben:
übernehme keine garantie für fehlerfreie funktion dieses quellcodes

Garantie wird nachgereicht :wink::
ausblenden Quelltext
1:
i := i / 2;					

verursacht "Imkompatible Typen 'Integer' und 'Extended'. Richtig wäre:
ausblenden Quelltext
1:
i := i div 2;					

und nocheinmal "Imkompatible Typen" in der Zeile
ausblenden Quelltext
1:
s := chr( k + '0' ) + s;					

Richtig wäre:
ausblenden Quelltext
1:
s := chr(k + BYTE('0')) + s					

(anstelle von "BYTE" kann natürlich auch "ORD" benutzt werden)

Nun, und das "Umwandeln" von negativen Integer-Werten in positive ist mit
ausblenden Quelltext
1:
i := abs(i);					

auch recht schnell und ohne Verwirrung erledigt.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Do 05.12.02 20:47 
Hab mal selbst entwickelt. Weiss allerdings nicht mehr ob sie Fehlerfrei arbeitet oder nicht:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
// Konvertiert Dezimalzahl (z.B. 132) in BinString (z.B. '01101011')
// Len gibt an wie lang der BIN-String sein soll (Auffüllung mit 0'en)
function DecToBin(Dec, Len: Byte): String;
begin
  while Dec > 0 do begin
    Result := IntToStr(Dec mod 2) + Result;
    Dec := Dec div 2;
  end;
  while Length(Result) < Len do Result := '0' + Result;
end;
Skywalker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 06.12.02 09:07 
Dank Eurer Hilfe läuft es jetzt wunderbar.

_________________
CU

Skywalker

:nixweiss:
Nobody is perfect!!!!!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.12.02 18:44 
MathiasSimmack hat folgendes geschrieben:
Nun, und das "Umwandeln" von negativen Integer-Werten in positive ist mit
ausblenden Quelltext
1:
i := abs(i);					

auch recht schnell und ohne Verwirrung erledigt.


Das ist so aber nicht ganz richtig. Zwar funktioniert dann die FDunktion, aber man müßte sich erst mal einigen, wie man negative Zahlen binär darstellt: durch das Zweierkomplement oder sonst wie, dann spielt natürlcih noch dioe Darstellung der Breite eine Rolle. Man kann das höchste Bit als Vorzeichenbit nehmen 10000001b wäre -1d oder aber 129 je nach Definition.

Also ganz so trivial ist das mit den negativen Werten nicht. :wink:
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.12.02 21:40 
Das ist sicher richtig. Ich habe mich aber nur auf die Aussage
Zitat:
bei negativen müsstest du die noch auf positive mappen, will ich aber jetzt nicht ausführen, um nicht unnötig zu verwirren

bezogen. Das hörte sich in meinen Ohren so an, als wären negative Werte nicht ... hm, sagen wir mal: gewünscht. Und ich glaube, wenn man nur positive Werte zulassen will, ist "abs" doch eigentlich sinnvoll.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 07.12.02 03:55 
Dann ja, aber auch nur dann. Ich wollte damit nur ausdrücken, dass man aucn negative Werte im Binärsystem darstellen kann.