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:
Wäre toll wenn ihr mir weiterhelfen könntet
function dec2bin(eingabe : BYTE) : STRING;
|
AW: Dezimal auf Binär mithilfe von shr
Zitat:
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 |
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:
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.
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; |
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? |
AW: Dezimal auf Binär mithilfe von shr
Zitat:
Delphi-Quellcode:
Somit umgeht man bei einem AND 1 das man den String andersrum anhängen muss...
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; Result := '1' + Result; Mavarik |
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; |
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:
|
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; |
AW: Dezimal auf Binär mithilfe von shr
Zitat:
|
AW: Dezimal auf Binär mithilfe von shr
Zitat:
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. |
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