![]() |
der zahl-in-bits-umwandler
Liste der Anhänge anzeigen (Anzahl: 1)
hi, ich hab hier mal ein kleines programm geschrieben um kleine und mittlere Zahlen in Zahlen der Zweierreihe, also in bits umzuwandeln. z.B. 13 zu 1101.
Sobald einer irgendeinen nutzwert feststellt soll er es mir bitte sagen :nerd:
Delphi-Quellcode:
procedure TForm2.MaxBestimmen(Zahl:integer);
begin if Zahl<2 then begin max := 1;anz:=1 end else if Zahl<4 then begin max := 2;anz:=2 end else if Zahl<8 then begin max := 4;anz:=3 end else if Zahl<16 then begin max := 8;anz:=4 end else if Zahl<32 then begin max := 16;anz:=5 end else if Zahl<64 then begin max := 32;anz:=6 end else if Zahl<128 then begin max := 64;anz:=7 end else if Zahl<256 then begin max := 128;anz:=8 end else if Zahl<512 then begin max := 256;anz:=9 end else if Zahl<1024 then begin max := 512;anz:=10 end else if Zahl<2048 then begin max := 1024;anz:=11 end else if Zahl<4096 then begin max := 2048;anz:=12 end else if Zahl<8192 then begin max := 4096;anz:=13 end else if Zahl<16384 then begin max := 8192;anz:=14 end else if Zahl<32768 then begin max := 16384;anz:=15 end else if Zahl<65536 then begin max := 32768;anz:=16 end else if Zahl<131072 then begin max := 65536;anz:=17 end else showmessage('die Zahl ' + inttostr(Zahl) + ' ist zu hoch, geben sie eine Zahl zwischen 1 und 131071 ein') end; procedure TForm2.Button1Click(Sender: TObject);var j:integer; begin FormCreate(Sender); MaxBestimmen(StrToInt(Edit1.Text)); Wert := StrToInt(Edit1.Text); BitsBestimmen; for j:= 1 to 17 do begin if j = 1 then Edit1.Text := ''; Edit1.Text := Edit1.Text + Bit[j] end; end; procedure TForm2.BitsBestimmen; var i: integer; begin for i := 1 to anz do begin if wert>=max then begin Bit[i] := '1';dec(wert,max) end else Bit[i] := '0'; if max>1 then max := max div 2 end; end; procedure TForm2.FormCreate(Sender: TObject); begin i := 1; j := 1; Bit[1] := ''; Bit[2] := ''; Bit[3] := ''; Bit[4] := ''; Bit[5] := ''; Bit[6] := ''; Bit[7] := ''; Bit[8] := ''; Bit[9] := ''; Bit[10] := ''; Bit[11] := ''; Bit[12] := ''; Bit[13] := ''; Bit[14] := ''; Bit[15] := ''; Bit[16] := ''; Bit[17] := ''; max:=0; wert:=0; end; procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 13 then Button1Click(Sender) end; |
Re: der zahl-in-bits-umwandler
Ungerade Anzahlen von Bits hab ich noch nie wirklich verwendet gesehen, die kleinste Einheit dürften Nibbles (4 bit) sein. Außerdem, wofür gibts Schleifen?
Delphi-Quellcode:
function ByteToBits(const ByteValue: byte): string;
var i: integer; begin Result := ''; for i := 7 downto 0 do if (ByteValue and (1 shl i))>0 then Result := Result + '1' else Result := Result + '0'; end; |
Re: der zahl-in-bits-umwandler
Hi fast-Nachbar *gg*,
Um ehrlich zu sein: der Code hat Null Nutzwert ... es gibt deutlich effektivere Varianten, such mal nach Bits, zerlegen und Byte ... afair kommt der Code von negaH und ist a) kürzer und b) schneller: Ich hätte ja gesagt, lass uns mal bei nem Bier darüber reden, aber naja, ... Ich finds gerade net, also der Auszug aus meinem Projekt:
Delphi-Quellcode:
type TBits = array[1..8] of boolean;
Delphi-Quellcode:
WICHTIG: TBits verträgt sich nicht mit dem TBits aus der VCL!
function ByteToBits(input : byte) : TBits;
var i : byte; begin i := 1; while input <> 0 do begin result[i] := odd(input); inc(i); input := input shr 1; end; while i <= 8 do begin result[i] := false; inc(i); end; end; mfG Markus PS: Du kannst das ganze durch ändern der Variablen und Schleifendurchläufe auch auf Zahlen > Byte anwenden |
Re: der zahl-in-bits-umwandler
is eigentlich auch nicht wirklich als nützlich gedacht, aber ich bin halt net so ein guter programmierer und wollte mal wissn wie ihrs findet :)
|
Re: der zahl-in-bits-umwandler
Ich sags mal so ... es is ne nette Übung für Fallunterscheidungen, jetzt könntest du mal zu schleifen übergehn *g*
mfG Markus |
Re: der zahl-in-bits-umwandler
wenn du die letzten paar zeilen meinst, wo alles in '' geändert wird:
ich hätte ja ne schleife gemacht, aber ich hatte lust 'n Büschn was zu schreiben :bouncing4: :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr. |
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