Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FreePascal Dezimal auf Binär mithilfe von shr (https://www.delphipraxis.net/191878-dezimal-auf-binaer-mithilfe-von-shr.html)

polruler 27. Feb 2017 12:51

Dezimal auf Binär mithilfe von shr
 
Hallo ich hab mal ein paar fragen an euch da ich mich nicht sonderlich mit Pascal auskenne. Ich soll etwas programmieren womit man von Dezimal auf binär kommt. Das soll ich mit Hilfe einer verbalen Beschreibung lösen, aber die verwirrt mich nur :?

-Definiere die Variable "bitmask" als BYTE, diese soll mit 128 initialisiert werden.
-bitmask soll mit jedem Schleifendurchgang um eine Stelle nach rechts geschoben werden.
-Die Schleife endet wenn das Bit auf Null gesetzt ist.
-Innerhalb der Schleife soll die Variable "eingabe" mit der Variable "bitmask" verknüpft werden. Du hast AND, OR, XOR zur Verfügung.
-Ist das Bit gesetzt, speichere im Ausgabestring das Zeichen 1, ist es nicht gesetzt das Zeichen 0.

Dazu ist auch der Funktionskopf gegeben:
Code:
function dec2bin(eingabe : BYTE) : STRING;
Wäre toll wenn ihr mir weiterhelfen könntet

Mavarik 27. Feb 2017 13:05

AW: Dezimal auf Binär mithilfe von shr
 
Zitat:

Zitat von polruler (Beitrag 1362774)
-Ist das Bit gesetzt, speichere im Ausgabestring das Zeichen 1, ist es nicht gesetzt das Zeichen 0.
Code:
function dec2bin(eingabe : BYTE) : STRING;
Wäre toll wenn ihr mir weiterhelfen könntet

Die Aussagen passen nicht zusammen.

Dezimal zu bin bedeutet mache aus 128 -> 10000000
Aber ein Byte ist schon Binär die Funktion müsste BytetoBinString heißen...

aber die Bedingung
> -Die Schleife endet wenn das Bit auf Null gesetzt ist.

Soll was bedeuten? Welches Bit ist "Das Bit"? Oder sollte es Das Byte ("Bitmask") heißen?

Mavarik

Aviator 27. Feb 2017 13:19

AW: Dezimal auf Binär mithilfe von shr
 
@Mavarik: Sei doch nicht so streng mit ihm. Das ist wahrscheinlich wieder eine Aufgabe aus dem Unterricht in dem die Schüler nicht mal den Unterschied zwischen Bit und Byte erklärt bekommen haben. :roll:

Ich schreibe es mal als "Pseudocode" hin, da ich hier keine direkte Lösung posten will und es hier auch nicht gern gesehen wird, dass im Forum Schulaufgaben gelöst werden. Ich übernehme einfach mal so den Funktionskopf wie er vorgegeben wurde.

Delphi-Quellcode:
function dec2bin(eingabe : Byte): string;
begin
  Result := '';
  repeat
    if erstes Bit = 1 then
      hänge an das Ergebnis eine 1 ran
    wenn nicht
      hänge an das Ergebnis eine 0 ran

    Shifte Eingabe um eins nach rechts
  until eingabe = 0;
end;
Wenn ich jetzt nichts vergessen habe, dann sollte das schon alles sein. Ich hoffe, du kannst dir daraus einen Code basteln. Wenn du dann noch Probleme hast, können wir dir natürlich gerne weiterhelfen.

polruler 27. Feb 2017 13:21

AW: Dezimal auf Binär mithilfe von shr
 
Ummmm also ich glaube es ist die Variable bitmask gemeint... aber wie schon gesagt es hat mich auch verwirrt.

@Aviator Und wie kann ich ein bestimmtest Bit prüfen?

Mavarik 27. Feb 2017 13:28

AW: Dezimal auf Binär mithilfe von shr
 
Zitat:

Zitat von Aviator (Beitrag 1362778)
Ich schreibe es mal als "Pseudocode" hin, da ich hier keine direkte Lösung posten will und es hier auch nicht gern gesehen wird, dass im Forum Schulaufgaben gelöst werden. Ich übernehme einfach mal so den Funktionskopf wie er vorgegeben wurde.

Ja ich dachte beim ersten lesen auch es sei "Dein" Code aber es ist eher so

Delphi-Quellcode:
function dec2bin(eingabe : Byte): string;
var
  BitMask : Byte;
begin
  BitMask := 128;
   Result := '';
   repeat
     if Bitmask and Eingabe > 0 then
       hänge an das Ergebnis eine 1 ran
     wenn nicht
       hänge an das Ergebnis eine 0 ran

     Shifte Bitmask um eins nach rechts
   until Bitmask = 0;
end;
Somit umgeht man bei einem AND 1 das man den String andersrum anhängen muss...
Result := '1' + Result;

Mavarik

polruler 27. Feb 2017 13:32

AW: Dezimal auf Binär mithilfe von shr
 
Ohhh so geht das also:shock: Vielen Dank !!!

Würde das so passen?

Code:
function dec2bin(eingabe : BYTE) : STRING;

var ausgabe : STRING;
   bitmask : BYTE;
begin
   ausgabe := '';
   bitmask := 128;
   REPEAT
      IF (bitmask AND eingabe > 0) THEN begin
         ausgabe := '1' + ausgabe;
      end ELSE begin
         ausgabe := '0' + ausgabe;
      end;
      bitmask := bitmask SHR 1;
   UNTIL (bitmask = 0);
   dec2bin := ausgabe;
end;

MichaelT 27. Feb 2017 13:52

AW: Dezimal auf Binär mithilfe von shr
 
Liste der Anhänge anzeigen (Anzahl: 1)
Fast ...

Lass dich nicht irritieren von den Prozedurnamen des, hüstl, Testtreibers :oops:

Delphi-Quellcode:

function dec2bin(eingabe : BYTE) : STRING;

var ausgabe : STRING;
   bitmask : BYTE;
begin
   ausgabe := '';
   bitmask := 128;
   REPEAT
      IF (bitmask AND eingabe > 0) THEN begin
         ausgabe := ausgabe + '1';
      end ELSE begin
         ausgabe := ausgabe + '0';
      end;
      bitmask := bitmask SHR 1;
   UNTIL (bitmask = 0);
   dec2bin := ausgabe;
end;


procedure TfEnumerateDesktopsAndWindows.bnThundermotherClick(Sender: TObject);
var
  grr : byte;

begin
  for grr in [0,1,2,3,8,127,128,255] do
    lbx.Items.Add(dec2bin(grr));
end;

Zitat:

Zitat von polruler (Beitrag 1362782)
Ohhh so geht das also:shock: Vielen Dank !!!

Würde das so passen?

Code:
function dec2bin(eingabe : BYTE) : STRING;

var ausgabe : STRING;
   bitmask : BYTE;
begin
   ausgabe := '';
   bitmask := 128;
   REPEAT
      IF (bitmask AND eingabe > 0) THEN begin
         ausgabe := '1' + ausgabe;
      end ELSE begin
         ausgabe := '0' + ausgabe;
      end;
      bitmask := bitmask SHR 1;
   UNTIL (bitmask = 0);
   dec2bin := ausgabe;
end;


Mavarik 27. Feb 2017 13:59

AW: Dezimal auf Binär mithilfe von shr
 
Gut die Aufgabe war so...
Aber das geht natürlich auch einfacher!

Delphi-Quellcode:
function dec2bin(Eingabe : BYTE) : STRING;
var
  I : BYTE;
begin
  Result := '';
  for i:=0 to 7 do
    begin
      if Eingabe and $1 = 0
        then Result := '0' + Result
        else Result := '1' + Result;
      Eingabe := Eingabe shr 1;
    end;
end;

Aviator 27. Feb 2017 14:20

AW: Dezimal auf Binär mithilfe von shr
 
Zitat:

Zitat von Mavarik (Beitrag 1362784)
Gut die Aufgabe war so...
Aber das geht natürlich auch einfacher!

Delphi-Quellcode:
function dec2bin(Eingabe : BYTE) : STRING;
var
  I : BYTE;
begin
  Result := '';
  for i:=0 to 7 do
    begin
      if Eingabe and $1 = 0
        then Result := '0' + Result
        else Result := '1' + Result;
      Eingabe := Eingabe shr 1;
    end;
end;

Womit wir wieder bei meinem "Pseudocode" wären. :stupid:

Mavarik 27. Feb 2017 14:26

AW: Dezimal auf Binär mithilfe von shr
 
Zitat:

Zitat von Aviator (Beitrag 1362786)
Womit wir wieder bei meinem "Pseudocode" wären. :stupid:

Naja nicht so ganz...

Das erste Bit ist sicherlich bit 7 und nicht bit 0
Und bei Anhängen würde man auch eher ein Result := Result + '1' erwarten...

:twisted:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.
Seite 1 von 2  1 2      

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