Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Binärrechner (https://www.delphipraxis.net/50000-problem-mit-binaerrechner.html)

Ultimator 19. Jul 2005 18:45

Re: Problem mit Binärrechner
 
Aaalso *g*
  • Chr Gibt das Zeichen zurück, das den als Parameter angegebenen ASCII-Code hat
  • Ord Macht das Ganze andersrum. Als Parameter wird ein Char erwartet und die Funktion gibt den passenden ASCII-Code zurück.
  • Odd Liefert true zurück, wenn die als Parameter angegebene (ganze) Zahl ungerade ist.
  • shr Verschiebt alle Bits eines Wertes um einen angegebenen Wert

Ich hoff, das war verständlich *g*

Metatron220 19. Jul 2005 18:50

Re: Problem mit Binärrechner
 
Vielen dank für die Erklärungen. Jetzt weiß ich zumindest eins:
nämlich dass ich absolut net weiß wie des mit der umwandlung nach der methode funktioniert. aber trotzdem vielen dank *g*

Khabarakh 19. Jul 2005 18:57

Re: Problem mit Binärrechner
 
Drei kleine Anmerkungen :wink: :
  • Chr Gibt das Zeichen zurück, das den als Parameter angegebenen ASCII-Code hat
  • Ord Macht das Ganze andersrum. Als Parameter wird ein Char erwartet und die Funktion gibt den passenden ASCII-Code zurück. Funktioniert mit allen ordinalen Typen
  • Odd Liefert true zurück, wenn die als Parameter angegebene (ganze) Zahl ungerade ist. Compilermagic, daher schneller als "mod 2" oder "and 1"
  • shr Verschiebt alle Bits eines Wertes um einen angegebenen Wert nach rechts :wink:
Oder einfach:

Ultimator 19. Jul 2005 19:06

Re: Problem mit Binärrechner
 
Zitat:

Zitat von Khabarakh
Drei kleine Anmerkungen :wink: :
  • Chr Gibt das Zeichen zurück, das den als Parameter angegebenen ASCII-Code hat
  • Ord Macht das Ganze andersrum. Als Parameter wird ein Char erwartet und die Funktion gibt den passenden ASCII-Code zurück. Funktioniert mit allen ordinalen Typen
  • Odd Liefert true zurück, wenn die als Parameter angegebene (ganze) Zahl ungerade ist. Compilermagic, daher schneller als "mod 2" oder "and 1"
  • shr Verschiebt alle Bits eines Wertes um einen angegebenen Wert nach rechts :wink:
Oder einfach:

OK, zu Ord: Das wusst ich gar nicht :oops: Habs nur in Verbindung mit Chars gebraucht :)
Zu Odd: Das wusste ich, aber das war halt einfach Zusatzinformation ;)
Zu shr: Das wollte ich sogar schreiben :oops: Und shl als Gegenteil (also, dass es nachlinks verschiebt) wollte ich auch erwähnen :)

Aber jetz is ja alles gesagt ;)

Metatron220 20. Jul 2005 15:05

Re: Problem mit Binärrechner
 
Sorry wenn ich mich so doof anstelle aber könnt mir einer erklären warum der Code von Marabu funktioniert?
Danke schon mal

barf00s 20. Jul 2005 15:23

Re: Problem mit Binärrechner
 
@marabu, das war doch nur spaß -.-°

flomei 20. Jul 2005 15:29

Re: Problem mit Binärrechner
 
Bitte hört mal langsam aber sicher mit euren Einzeiler-Off-Topic-Posts auf.
Danke.

MFG Florian :hi:

marabu 20. Jul 2005 15:52

Re: Problem mit Binärrechner
 
Hi Metatron,

Delphi-Quellcode:
Result := Chr(Ord('0') + Ord(Odd(c))) + Result;
// alternativ: Result := IntToStr(Ord(Odd(c))) + Result;
Odd(c) ist true für ungerade c, die ganze Zeile ist Zeichen-Arithmetik. Wenn es auf ein paar-zig CPU-Zyklen nicht ankommt, dann kannst du auch IntToStr() verwenden. In der Schleife wird immer nur das least significant bit (bit 0) betrachtet und anschließend durch bitweises Schieben eliminiert.

marabu

@barf00s: verstehe - willst also nicht helfen...

Metatron220 20. Jul 2005 16:27

Re: Problem mit Binärrechner
 
danke sehr. so ganz hab ichs zwar noch nich aber ich glaub so halbwegs hab ichs verstanden. ^^

marabu 20. Jul 2005 16:52

Re: Problem mit Binärrechner
 
Nochmal - anderer Ansatz:

Denke dir eine Zahl -- 5 ist gut. Die 5 als Dualzahl sieht etwa so aus: 101
In der Schleife nehme ich das rechte bit und wandle es in das Zeichen '1' um (ASCII-Code 49), baue das Zeichen in einen String so ein, dass es an der dem bit entsprechenden Stelle steht, danach schubse ich alle bits um eine Stelle nach rechts, wobei die 1 von eben in ein Wurmloch fällt.
Das geht solange, bis keine bits mit dem Wert 1 mehr vorkommen.

Jetzt klarer?

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz