2017-09-24 2 views
1

Ich würde gerne wissen, ob mein Ansatz zur Bestimmung der Max- und Min-Werte der Typen korrekt ist.Ich habe gegoogelt und konnte keine genaue Methodik finden, um dies zu bestimmenAnsatz zur Bestimmung von Max.- und Min.-Werten verschiedener Typen

das ist mein Ansatz: Um die Größen der Typen zu bestätigen I this Link Nun ist die Verbindung besagt bin mit, dass die Größe von int_32_t (standardmäßig signiert) 16 bits in LP32 .So max 16 Bit nicht heißt 65535 sein wird. Aber seit seiner Unterzeichnung bekommen wir ein Maximum von 65535/2 = 32767.5, also gehe ich davon aus, dass seine Reichweite -32767 to 32767 sein wird? Hab ich recht ? Und in ähnlicher Weise für uint32_t wird die Größe wird 16 bits in LP32 sein. So maximal 16 Bit ist 65535 so wird Bereich 0 to 65535 sein? Hab ich recht ? Was ist der Unterschied zwischen LP32 und ILP32 welchen sollte ich folgen?

+0

Sie schrieb eine benutzerdefinierte 'atoi()' Funktion? Was hat dich dazu gebracht?:-( – einpoklum

Antwort

1

Sie müssen keine Annahmen treffen. Verwenden Sie einfach die Standardeigenschaften:

http://en.cppreference.com/w/cpp/types/numeric_limits

ZB:

std::numeric_limits<std::int32_t>::min(); 
std::numeric_limits<std::int32_t>::max(); 

, um einige Ihrer Punkte ansprechen:

int_32_t (standardmäßig signiert ist)

Nicht standardmäßig, aber vom Sprachstandard vorgeschrieben. Es ist eine vorzeichenbehaftete Ganzzahl. Das vorzeichenlose Äquivalent ist std::uint32_t.

int32_t [...] werden 16 Bits

Umm ... Nö sein. Es ist genau 32 Bits ohne Füllbits vorzeichenbehaftete Ganzzahl-Typen mit einer Breite von und Komplement unter Verwendung von 2 für negative Werte (vorausgesetzt nur, wenn die Umsetzung unmittelbar den Typen unterstützt)

Ich gehe davon aus seiner Reichweite -32.767-32.767 wird? Hab ich recht ?

Nr Für eine 16-Bit-Ganzzahl mit Vorzeichen unter Verwendung von 2-Komplement (std::int16_t) der Bereich

-32,768 .. 32,767 

Hier ist, wie Sie diese Zahlen erreichen:

Der int-Typ 16 Bits hat (und keine Polsterung). Mit 16 Bits können Sie 2^16 = 65,536 eindeutige Werte codieren. In beiden ergänzen die diese Werte sind wie folgt verteilt:

  • [0, 32,767]: 32.768 positive Werte
  • [-32,768, -1]: 32.768 negative Werte
+0

Ich verstehe das, aber ich wollte wissen, ob meine Vorgehensweise richtig ist, wie diese Werte zu bestimmen sind? – Rajeshwar

+0

@Rajeshwar ist es jetzt klar? – bolov

+0

danke für die Antwort Ich versuche, es jetzt zu verdauen. Btw meinst du 65.536 statt 65.536 – Rajeshwar

Verwandte Themen