Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Problem mit Bit-Manipulation (https://www.delphipraxis.net/162902-problem-mit-bit-manipulation.html)

himitsu 9. Sep 2011 08:01

AW: Problem mit Bit-Manipulation
 
Und genau das ist richtig.

das höste Bit ist quasi das "-"
und damit die 0 nicht doppelt vorkommt, gibt es kein "-0", weswegen dann natürlich die negativen Darstellungen um 1 verschoben sind.
> Bei Google suchenZweierkomplement

Laß dir das Ergebnis und den Eingang doch einfach mal Hexadezimal oder Binär ausgeben.

Panschi 9. Sep 2011 08:07

AW: Problem mit Bit-Manipulation
 
okay... wenn ich die NOT Funktion anwende und das Ergebnis in Binär ausgebe stimmts schonmal

DeddyH 9. Sep 2011 08:11

AW: Problem mit Bit-Manipulation
 
Es hätte mich auch gewundert, wenn nicht. Wie gesagt, Du kannst zur Not noch AND-verknüpfen, wenn Du Dich auf eine bestimmte Bitbreite einschränken willst.

Panschi 9. Sep 2011 08:14

AW: Problem mit Bit-Manipulation
 
Danke schonmal für die Antworten :thumb: Dann probiere ich das mit dem AND jetzt mal noch aus

Alex.G 9. Sep 2011 08:19

AW: Problem mit Bit-Manipulation
 
Delphi-Quellcode:
(not zahl1) and (not 2147483648);
Könnte man das auch verwenden? :lol:

DeddyH 9. Sep 2011 08:21

AW: Problem mit Bit-Manipulation
 
Zitat:

Zitat von Panschi (Beitrag 1122800)
Aber wenn ich das richtig verstanden habe, dann müsste bei 4 (also 0100), 11 (1011) herauskommen oder?

Delphi-Quellcode:
ShowMessage(IntToStr(not 4 and $0000000F));
:zwinker:

himitsu 9. Sep 2011 08:26

AW: Problem mit Bit-Manipulation
 
Verwende auch mal Cardinal (LongWord) statt dem Integer (LongInt).

Dazu dann noch IntToStr und Delphi-Referenz durchsuchenStrToInt64, für die Umwandlung.


Bedenke, daß es 2147483648 im "Integer" nicht gibt.
Es funktioniert nur, da dieses zufällig (falls überhaupt) in einen Int64 umgewandelt wird.

Der Compiler verwendet selten Cardinal und versucht es öfters gegen Integer/Int64 zu casten.

Wärend $80000000 in einen Integer paßt, da bei der Hexadezimaldarstellung vom Compiler standardmäßig kein "-" erwartet wird und es somit in 32 Bit reinpaßt.

Panschi 9. Sep 2011 08:30

AW: Problem mit Bit-Manipulation
 
:-Dcool, danke für die :thumb: so läufts endlich :-D

Das mit dem Cardinal werd ich mir mal genauer angucken :-D

DeddyH 9. Sep 2011 08:38

AW: Problem mit Bit-Manipulation
 
Der Unterschied zwischen Integer und Cardinal ist einfach der, dass Integer vorzeichenbehaftet ist, d.h. das höchstwertige Bit bestimmt, ob es sich um eine positive oder negative Zahl handelt.

Panschi 9. Sep 2011 08:42

AW: Problem mit Bit-Manipulation
 
ah okay... und bei Cardinal würde die Zahl dann positiv bleiben


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz