Windows: MAXDWORD+1 ?

19/05/2015 - 08:28 von ha | Report spam
Hallo

Auf der Seite

https://msdn.microsoft.com/en-us/li...85%29.aspx

sagt MS zur Berechnung der Filegrösse aus WIN32_FIND_DATA dies hier:

"The size of the file is equal to (nFileSizeHigh * (MAXDWORD+1)) +
nFileSizeLow."

Was soll "MAXDWORD+1" bedeuten ?

Zumal der VSE2013 hier erwartungsgemàss einen
"Überlauf einer ganzzahligen Konstanten" meldet.

MAXDWORD ist laut winnt.h = 0xffffffff

Kann mir jemand den Sinn der Addition von 1 erklàren ?
 

Lesen sie die antworten

#1 Edzard Egberts
19/05/2015 - 10:00 | Warnen spam
"The size of the file is equal to (nFileSizeHigh * (MAXDWORD+1)) +
nFileSizeLow."

Was soll "MAXDWORD+1" bedeuten ?

Zumal der VSE2013 hier erwartungsgemàss einen "Überlauf einer
ganzzahligen Konstanten" meldet.

MAXDWORD ist laut winnt.h = 0xffffffff

Kann mir jemand den Sinn der Addition von 1 erklàren ?



Das ist so grundlegend, dass es fast schon wieder schwer zu erklàren ist
- siehe Zahlensysteme und Stellenwertigkeit:

Du hast da eine positive ganze Zahl, die aus zwei "WORDS" (Microsprech
für 32bit unsigned int) besteht, die den High- und den Low-Teil der Zahl
angeben (zusammen also eine 64bit-Zahl darstellen).

Wenn Du zum Maximalwert des WORDs die Eins addierst, bekommst Du einen
Überlauf in die nàchste Stelle 0x0_ffffffff -> 0x1_00000000, die der
kleinste Wert des HWORD (1) ist (die Unterstriche trennen die WORDs).
Anders gesagt hat das erste Bit des HWORDs die Wertigkeit 0x100000000
und nicht Eins, wie das erste Bit des LWORDs. Die 64bit-Gesamtzahl
entspricht also HWORD * 0x100000000 + LWORD, wie von Dir schon angegeben.

Im Dezimalsystem ist es das gleiche - wenn man zu 9 ("Max-Einerstelle")
eine 1 addiert, landet man bei 10, wobei die 1 der 10 dann die
Wertigkeit "Max-Einerstelle plus Eins" hat, 20 dann 2* (Max-Einerstelle
plus Eins) entspricht, usw.

Ähnliche fragen