unsigned short vs unsigned int - manchmal sind sie der gleiche Bereich? [geschlossen]

8

Was ist der Unterschied zwischen unsigned short und unsigned int ? Ich fand, dass unsigned short ist 0-65,535 und unsigned int ist 0-65,535 oder 0-4,294,967,295 . Ich verstehe den Unterschied nicht sehr gut. Wie kann ich die Größe des Datentyps in meiner Architektur erkennen? Und wenn zum Beispiel c = (unsigned short) d; wenn c ist unsigned short und d ist unsigned int ; was ist das mittlere? Die ersten 16 Bits von d werden c ?

zugewiesen     
mpluse 17.03.2013, 01:35
quelle

4 Antworten

6

Sie fragen wirklich, was der Unterschied zwischen short und int ist. Die Antwort ist, dass short möglicherweise schmaler ist, aber auch dieselbe Breite wie int . Das ist praktisch alles, was wir wissen, unabhängig von der Plattform. Viele Plattformen haben 32-Bit int und 16-bit short , aber nicht alle.

    
John Zwinck 17.03.2013 01:39
quelle
1

Dies ist ein nützlicher Link, um den Verlauf von C-Datentypen zu erklären:

Ссылка

Die Größe Ihres Datentyps ist also plattformabhängig, aber wenn Ihr int eine Länge von 32 Bits hat, dann kann es eine von 2 ^ 32 verschiedenen Zahlen darstellen (0 - 4.294.967.295, wenn nicht vorzeichenbehaftet). Ähnlich verhält es sich, wenn Ihre Abkürzung 16 Bit lang ist, dann kann sie eine von 2 ^ 16 verschiedenen Zahlen darstellen (0 - 65.535, falls nicht vorzeichenbehaftet).

Dieser Link gibt Ihnen die Implementierungsdetails für Visual Studio 2005, wobei Ints 32-Bit-Größe (4 Byte) und Kurzschlüsse 16 Bit (2 Byte) sind:

Ссылка

Ihre genaue Implementierung hängt von Ihrem Compiler ab.

Was den letzten Teil Ihrer Frage angeht, ja, wenn Sie versuchen, einen int, der größer als der Maximalwert des Short ist, auf einen Short zu reduzieren, erhalten Sie einen anderen Wert (wahrscheinlich die ersten 16 Bits, aber Sie sollten es testen) sicher sein).

    
gavinj500 17.03.2013 01:42
quelle
0

Wir können nicht sagen, dass ein variabler Typname (kurz, int, long, double usw.) eine bestimmte Bitlänge über alle Mikroprozessorarchitekturen oder Programmiersprachen zeigen muss. Es hängt hauptsächlich von der Architektur der Mikroprozessoren und natürlich von den Definitionen der Programmiersprachen ab. Im Allgemeinen sollte signed / unsigned short (ich würde erwarten) eine halbe Bitgröße von signed / unsigned int haben.

    
ceremcem 17.03.2013 01:57
quelle
-1

Nun, zuerst müssen Sie verstehen, was ein unsigned int und short ist.

Alles ist in Bits aufgeteilt.

Ein short ist 16 Bits, wobei jedes Bit eine 1 oder eine 0 ist. Der Einfachheit halber demonstriere ich mit 4 Bits

%Vor%

Beachten Sie, dass bei einer vorzeichenlosen Zahl der Zahlenbereich größer ist, können wir machen     1111 = 15.

Aber mit einer vorzeichenbehafteten Nummer ist die maximale Möglichkeit     0111 = 7.

Jetzt hat ein Kurzschluss 16 Bits und gibt es

%Vor%

Ein Int hat 32 Bits, was einen Bereich von

ergibt %Vor%     
BrettD 17.03.2013 01:47
quelle

Tags und Links