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
 
Alallart

Registriert seit: 8. Dez 2015
162 Beiträge
 
#1

Warum ist bei dem negativen Integer das erste Bit 0?

  Alt 27. Mär 2024, 21:03
Integer ist ein Variablentyp mit Vorzeichen (d.h. Plus/Minus). Das Vorzeichen wird meiner Kenntnis nach mit einem Bit gegenzeichnet, d. h. ist das erst Bit, von links gesehen, eine 0, dann ist die Zahl positiv. Ist es eine 1, ist die Zahl negativ. Für den Wert sind von den 32 Bit eines Integers nur 31 Bit nutzbar. Das 32'ste Bit ist für das Vorzeichen.

Das wollte ich mal überprüfen und habe den Code geschrieben. Allerdings ist das erste Bit immer eine 0, egal was für ein Wert ich nehme, positiv oder negativ. Wo liegt mein Fehler?
Delphi-Quellcode:
function BitAtPos(BitPos: Byte): Integer;
begin
  Result := 0;
  if (BitPos <= (SizeOf(Integer) * 8)) and (BitPos > 0) then
    Result := Integer(1) shl (BitPos - 1);
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 := 1 to (SizeOf(Int) * 8) do
    Result := b[(Int and BitAtPos(i)) > 0] + Result;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToBinStr(-214748364));
end;
  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 04:31 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