AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Bitweises AND

Ein Thema von Benmik · begonnen am 17. Mai 2020 · letzter Beitrag vom 18. Mai 2020
Antwort Antwort
Seite 2 von 2     12
Benmik

Registriert seit: 11. Apr 2009
281 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Bitweises AND

  Alt 18. Mai 2020, 13:00
Wenn man neu im Thema ist, ist diese Stelle auch nützlich.

Ich habe mich schon immer gewundert, warum Datentypen mit und ohne Vorzeichen den gleichen Umfang abbilden können, da müsste doch ein Bit für das Vorzeichen abgehen? Hier und hier in Antwort #2 findet sich die Erklärung.

Nicht, dass ich sie verstanden hätte. Muss ich auch nicht, denn ich halte mich an Mafalda:
Miniaturansicht angehängter Grafiken
mafalda.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.861 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Bitweises AND

  Alt 18. Mai 2020, 13:39
Joar, binäre Operationen arbeiten nur binär, also auf den Bits und den Bits ist es egal wie sie interpretiert werden.

Es hat aber dennoch eine Auswirkung, wenn man Signed mit Unsigned mischt, vor allem wenn die beiden Werte nicht gleich groß sind.

ShortInt($FF) and LongWord($80000000) ergibt was?

Wird beim Anpassen der Bitbreite das ShortInt als Signed vergrößert, dann ergibt es LongInt($FFFFFFFF),
aber wird es Unsigned vergrößert, dann kommt LongWord($000000FF) raus,
und somit könnte, bei einem Fehler, ein anderes Ergebnis raus kommen.



https://translate.google.com/#view=h...0sabemos%208x5
?

Im Prinzip stimmt das mit dem einem Bit.
Bei Signed gibt es "quasi" das Vorzeichen an, also ob die erste Hälfte der möglichen Zahlen oder die zweite Hälfte.
Und bei Unsigned gibt das Bit im Prinzip auch an, oder die erste Hälfte oder die Zweite.

z.B. bei Signed wird im Zweierkomplement die zweite Häfte des Wertebereichs in umgekehrter Zählung für den negativen Bereich verwendet.
Es kommt halt nur drauf an, wo man den Nullpunkt setzt.
Wenn in der Mitte, dann hat man auch negative Zahlen, mit einer "einfachen" Umrechnung zwischen Negativ und Positiv.

Es gibt im Zweierkomplement also ein Bit für negativ, aber das ist "eigentlich" nicht "nur" das Vorzeichen, sondern stellt nur dar in welchem Bereich man sich bedfindet.

Bei Fließkommazahlen nach IEEE 754 ist das Signed-Bit wirklich das Vorzeichen
und ansonsten haben positive und negative Zahlen das selbe Format.

* Integer = alle Bits umdrehen und -1, um die Zahl negativ zu machen
* Float = ein Bit umdrehen, um die Zahl negativ zu machen

Da man im Zweierkomplement die Zahl 0 nicht doppelt braucht (Platzverschwendung), hat man hier im Negativen auch einen Wert mehr zur Verfügung.
Würde man den zusätzlichen Wert im positiven Bereich eingliedern, dann täte das mit dem Signed-Bit Negieren nicht mehr funktionieren.


Beim Zweierkomplement kann man beim Hochskalieren einfach das höchste Bit nehmen und dupplizieren.
ShortInt $80 = SmallInt $FF8F = Longint $FFFFFF80
ShortInt $7F = SmallInt $007F = Longint $0000007F
Und runterzu kann man auch sehr einfach prüfen, ob es passt. (neues höchtes Bit = alle höheren Bits)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (18. Mai 2020 um 13:47 Uhr)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
281 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Bitweises AND

  Alt 18. Mai 2020, 14:43
Ich glaube dir !! Aber ich bleibe bei Miguelito.

("Na, Miguelito, woll'n wir doch mal sehn, wieviel ist denn 8 x 9?" - "Wir, die wir unsere Grenzen kennen, wissen, wieviel 8 x 5 ist...")
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf