Unsigned Integer

Für allgemeine Fragen zur Programmierung mit PureBasic.
PBuser
Beiträge: 12
Registriert: 03.10.2005 14:31

Unsigned Integer

Beitrag von PBuser »

Hallo zusammen

um eine vorhande DLL richtig ansprechen zu können benötige ich
unsigned integer: C-Deklaration: UINT8 UINT16 UINT32
ich muss diese an die DLL weitergeben und bekomme diese zurück.


In der PBHilfe habe ich gelesen das PB keine unsigned int unterstützt.

Werden unsigned Integer in PB aufgenommen (vielleicht Rev. 4.03)?

Gibt es einen Trick um in PB mit unsigned Int umzugehen?

Danke
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ob ein typ signed oder unsigned ist, ist letztendlich nur eine frage der ausgabeform.
im speicher selber verhält sich ein signed exact wie ein unsigned,
also normalerweise merkt man den unterschied nicht.

um unsigned-ausgabe zu ermöglichen, benutzt man einfach einen größeren typ,
und eine Bitwise AND-verknüpfung, um aus dem vorzeichenbit ein wertebit zu machen.

Code: Alles auswählen

Debug "--- uint8 ---"
uint8.b = 224         ; > +127
Debug uint8
ausg8.w = uint8 & $FF ; größeren typen zur ausgabe benutzen
Debug ausg8

Debug "--- uint16 ---"
uint16.w = 47111      ; > +32767
Debug uint16
ausg16.l = uint16 & $FFFF ; größeren typen zur ausgabe benutzen
Debug ausg16

Debug "--- uint32 ---"
uint32.l = 3123456789  ; > +2147483647
Debug uint32
ausg32.q = uint32 & $FFFFFFFF ; größeren typen zur ausgabe benutzen
Debug ausg32
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Beitrag von Little John »

Ich hätte gedacht, dass eine Zuweisung wie

Code: Alles auswählen

uint8.b = 224         ; > +127
einen "Overflow error" verursachen würde. Dass das nicht passiert, ist ja schon eine "halbe Unterstützung" für vorzeichenlose Variablen -- sehr angenehm.

Gruß, Little John
PBuser
Beiträge: 12
Registriert: 03.10.2005 14:31

Beitrag von PBuser »

@Kaeru Gaman

Vielen Dank für die Antwort.

Hat mir sehr weitergeholfen!
Antworten