12

unsigned shortとの違いは何unsigned intですか?私はそれunsigned short0-65,535であり、unsigned intまたは0-65,535であることがわかりました0-4,294,967,295。違いがよくわかりません。アーキテクチャのデータ型のサイズを知るにはどうすればよいですか?たとえばc = (unsigned short) d;cunsigned shortaでdがunsigned int;の場合。それはどういう意味ですか?からの最初の16ビットは?dに割り当てられます。c

4

4 に答える 4

6

あなたは本当にとの違いは何であるかを尋ねていshortますint。答えは、それshortはより狭いかもしれませんが、、と同じ幅かもしれないということintです。プラットフォームに関係なく、私たちが確かに知っているのは事実上すべてです。多くのプラットフォームには32ビットintと16ビットshortがありますが、すべてではありません。

于 2013-03-17T01:39:12.803 に答える
2

これは、C データ型の歴史を説明するのに役立つリンクです。

http://en.wikipedia.org/wiki/C_data_types

したがって、データ型のサイズはプラットフォームに依存しますが、int の長さが 32 ビットの場合、2^32 の異なる数値 (符号なしの場合は 0 - 4,294,967,295) のいずれかを表すことができます。同様に、short の長さが 16 ビットの場合、2^16 の異なる数値 (符号なしの場合は 0 ~ 65,535) のいずれかを表すことができます。

このリンクは、Visual Studio 2005 の実装の詳細を提供します。ここで、int はサイズが 32 ビット (4 バイト) で、short は 16 ビット (2 バイト) です。

http://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs.80).aspx

正確な実装は、コンパイラによって異なります。

質問の最後の部分については、はい、ショートの最大値よりも大きい int をショートにキャストしようとすると、別の値になります (おそらく最初の 16 ビットですが、確認する必要があります)。 .

于 2013-03-17T01:42:32.187 に答える
0

変数の型名(short、int、long、doubleなど)が、すべてのマイクロプロセッサアーキテクチャまたはプログラミング言語で特定のビット長を指す必要があるとは言えません。それは主にマイクロプロセッサのアーキテクチャともちろんプログラミング言語の定義に依存しています。一般に、signed / unsigned shortは、signed / unsignedintの半分のビットサイズである必要があります(私は予想します)。

于 2013-03-17T01:57:15.957 に答える
-1

まず最初に、unsignedintとshortが何であるかを理解する必要があります。

すべてがビットに分解されます。

ショートは16ビットで、各ビットは1または0です。簡単にするために、4ビットで示します。

1000 - Unsigned = 8 
1000 - Signed = -8 
1111 - Unsigned = 15 which is equal to 2^(# of bits) -1
1111 - Signed = -1

符号なしの数値では、数値の範囲が広くなるため、1111=15にすることができます。

ただし、符号付きの数値の場合、最大の可能性は0111=7です。

これで、shortは16ビットになり、

signed range of  −32,768 to 32,767  [−(2^15) to 2^15 − 1]
Unsigned range: 0 to 65,53  = 2^16 -1

Intには32ビットがあり、次の範囲を提供します。

Signed:−2,147,483,648 to 2,147,483,647 = −(2^31) to 2^31 − 1
Unsigned:  0 to 4,294,967,295 = 2^16 -1
于 2013-03-17T01:47:55.140 に答える