AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Warum ist bei dem negativen Integer das erste Bit 0?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum ist bei dem negativen Integer das erste Bit 0?

Ein Thema von Alallart · begonnen am 27. Mär 2024 · letzter Beitrag vom 28. Mär 2024
 
Benutzerbild von himitsu
himitsu

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

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

  Alt 28. Mär 2024, 02: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.
Ein Therapeut entspricht 1024 Gigapeut.

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


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 10:10 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