Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: Warum ist bei dem negativen Integer das erste Bit 0?

  Alt 28. Mär 2024, 03:05
Dein BitAtPos liefert einen Integer zurück.
Delphi-Quellcode:
b[(Int and BitAtPos(i)) <> 0]
                        ^^
Alternativ wäre es mit einem Cardinal so auch korrekt funktional.


Zitat:
Das Vorzeichen wird meiner Kenntnis nach mit einem Bit gegenzeichnet
Jain, aber im Prinzip kann man an dem Bit zumindestens erkennen, ob es negativ ist.
https://de.wikipedia.org/wiki/Zweierkomplement

Delphi-Quellcode:
function BitAtPos(BitPos: Byte): Integer;
begin
  Result := $1 shl BitPos;
end;

//Liefert einen Binär-String aus 0 und 1 im Wert von Integer zurück.
function IntToBinStr(Int: Integer): string;
const
  b: array[Boolean] of Char = ('0', '1');
var
  i: Integer;
begin
  Result := '';
  for i := 0 to SizeOf(Int) * 8 - 1 do
    Result := b[Int and ($1 shl i) <> 0] + Result;
end;
Delphi-Quellcode:
function IntToBinStr(Int: Integer): string;
const
  b: array[Boolean] of Char = ('0', '1');
var
  i: Integer;
begin
  Result := '';
  for i := 0 to SizeOf(Int) * 8 - 1 do
    Result := b[Odd(Int shr i)] + Result;
end;
Delphi-Quellcode:
function IntToBinStr(Int: Integer): string;
const
  b: array[Boolean] of Char = ('0', '1');
var
  i: Integer;
begin
  SetLength(Result, SizeOf(Int) * 8);
  for i := 0 to SizeOf(Int) * 8 - 1 do
    Result[i + Low(string)] := b[Odd(Int shr i)];
end;


Über Int als Bezeichner könnte man noch streiten, denn Delphi-Referenz durchsuchenInt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (28. Mär 2024 um 03:08 Uhr)
  Mit Zitat antworten Zitat