署名と非署名の差

Anonim

SignedとUnsigned

があります。私たちの数値システムは、負の無限大から正の無限大に至り、真ん中がゼロになります。しかし、プログラミングでは、基本的に2種類の数字があります。符号付きおよび符号なし。符号付きと符号なしの数値の主な違いは、負の数を使用できることです。符号なし数値は0以上の値しか持てません。対照的に、符号付きの数値は負で正の数を含む範囲でより自然です。

<! - 1 - >

非常に限られたリソースで数値を表現する必要があるため、符号付きおよび符号なし数値の作成が促されました。たとえば、8ビットを使用すると、合計256の組み合わせしかありません。符号なしの数値の場合は、0から255までの任意の値を意味します。これに対して、符号付きの数値を指定すると、符号を表すビットがすでに失われています。 7ビットの場合、最大128個の組み合わせがあり、8ビットの符号付き数値の範囲は-128〜127です。したがって、コンピュータの初期のような限られたリソースがある場合は、符号なしの数値を使用する方法があります。

<! - 2 - >

プログラミングで符号付きと符号なしの数値を使用する場合は、両方を同時に使用すると問題が発生する可能性があります。 1つは、符号なしの数値と符号なしの数値を比較する場合です。これにより警告が表示されますが、コンパイラは警告をコンパイルできます。第2の深刻な問題は、符号なしの数値の内容を符号付きの数値に割り当てるときです。符号なし数の値が符号付き数の最大値より大きい場合は、エラーになります。

<! - 3 - >

技術が開発されるにつれて、リソースはより豊かになり、無署名数の使用はますます少なくなってきています。これを説明するために、32ビット長の数値は、符号なしの場合は最大200万または400万の符号付き値を持つことができます。 64ビットに移行すると、その差は90と180の間になります。一般的なプログラムではほとんど使用されない値です。要約:

1。符号なしの数値にはゼロと正の数だけが含まれ、符号付きの数値には負の数が含まれます。 2。符号付きの数値は、符号なしの数値の最大値の半分です。 3。符号付きおよび符号なしの数値を混在させると、問題が発生する可能性があります。 4。符号付きまたは符号なしの数値の使用は、現代のアプリケーションではほとんど影響しません。