2013-03-17 20 views
8

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

+0

なぜ3つの言語が挙げられますか? – Lion

+0

Cのような音で、無関係の言語タグを削除します。 – djechlin

+0

3言語では一般的ではありませんか? – mpluse

答えて

6

実際にはshortintの違いは何ですか?答えはshortが狭いかもしれないが、intと同じ幅であるかもしれないということです。それはプラットフォームから独立した、事実上すべてがわかっています。多くのプラットフォームには、32ビットのintと16ビットのshortがありますが、すべてではありません。

+0

ありがとうございました。第2部の編集を確認できますか? :) – mpluse

+1

いいえ、私はもう答えない方にもっと多くのビットを追加するのではなく、別の質問をしてください。あなたが新しいお問い合わせを検索した場合、あなたはおそらく彼らがすでにここでの回答で質問していることに気付くでしょう。 –

+1

とにかくありがとうございました。 – mpluse

1

これは、Cのデータ型の歴史を説明するための有用なリンクです:

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

だからあなたのデータ型のサイズはプラットフォームに依存しますが、あなたのintはその後、長さが32ビットである場合2^32個の異なる数字のうちの1つを表すことができます(符号なしの場合は0〜4,294,967,295)。同様に、長さが16ビットの場合、2^16の異なる数字の1つを表すことができます(符号なしの場合は0〜65,535)。

このリンクはあなたにint型のサイズは32ビット(4バイト)とショートパンツは、16ビット(2バイト)されているVisual Studio 2005の、のための実装の詳細与える:あなたの正確な

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

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

質問の最後の部分については、shortの最大値よりも大きいintを短い値にキャストしようとすると、yes(最初の16ビットはおそらく最初の16ビットですが、テストする必要があります)念のため)。

+0

ありがとうございます。第2部の編集を確認できますか? :) – mpluse

+0

上記の私の編集を参照してください – gavinj500

+0

私はすでにリンクを見ました。 TY – mpluse

-1

まず、符号なしのintとshortが何であるかを理解する必要があります。

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

短いは、各ビットが1または私は符号なし数値で、数値の範囲は、我々ができ、大きいと4ビット

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

通知を実証する簡略化のために0であり、16ビットであります1111 = 15

しかし、符号付き数と を行い、最大の可能性は、 0111 = 7

短いそれに

01を与え、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我々は、変数タイプ名(短い、int型、長い、二重など)すべてにわたって特定のビット長を指すように有していると言うことができない

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 
+0

ありがとうございます。私はそれが同じ範囲の価値を持っているので、あいまいさを知っています。 – mpluse

+0

@Laforeああ。短くすると、16ビットを保証するのではなく、16ビットのIntが保証します。したがって、絶対に16ビットの整数が必要な場合に適しています。奇妙なことだ。 – BrettD

+1

非常に間違っています... 'char'は少なくとも8ビット、' short'または 'int'16、' long'32ビットです。 CRAYでは32ビットです。 – vonbrand

0

の範囲を与え、32ビットを有しますマイクロプロセッサアーキテクチャまたはプログラミング言語である。これは主に、マイクロプロセッサのアーキテクチャとプログラミング言語の定義に依存しています。一般に、符号付き/符号なしのshortは、符号付き/符号なしintの半分のビット・サイズを持つ必要があります。

+0

それを取得!ありがとうございました。 – mpluse

+1

いいえ... Cの 'short'と' int'は非常によく両方とも16ビットです。それはDOSの場合でした。 – vonbrand

関連する問題