AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi FreePascal Dezimal auf Binär mithilfe von shr

Dezimal auf Binär mithilfe von shr

Ein Thema von polruler · begonnen am 27. Feb 2017 · letzter Beitrag vom 27. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2   
polruler

Registriert seit: 27. Feb 2017
3 Beiträge
 
#1

Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 13:51
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
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:05
-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
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:19
@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.

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.
  Mit Zitat antworten Zitat
polruler

Registriert seit: 27. Feb 2017
3 Beiträge
 
#4

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:21
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?

Geändert von polruler (27. Feb 2017 um 14:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:28
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
  Mit Zitat antworten Zitat
polruler

Registriert seit: 27. Feb 2017
3 Beiträge
 
#6

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:32
Ohhh so geht das also 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;

Geändert von polruler (27. Feb 2017 um 14:35 Uhr)
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:52
Fast ...

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

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;

Ohhh so geht das also 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;
Miniaturansicht angehängter Grafiken
dpfun2.png  

Geändert von MichaelT (27. Feb 2017 um 14:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 14:59
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;
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 15:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Dezimal auf Binär mithilfe von shr

  Alt 27. Feb 2017, 15:26
Womit wir wieder bei meinem "Pseudocode" wären.
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...

  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:45 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