2011-01-31 1 views
41

私はちょうど混乱しています...ちょうどどれくらいの文字が1ビットですか?文字の何ビットですか?

+3

あなたの質問はあまり意味がありません。私は文脈の少しが助けるかもしれないと思います - あなたは何を達成しようとしていますか? –

+47

ビット数は何文字ですか?三? b、i、およびt。 –

+2

@Skurmedel:あなたの編集内容が質問の意味を変えました。ビットとバイトは**同じものではありません**! –

答えて

9

バイトには8ビットがあります(通常Windowsでは)。

ただし、文字を扱う場合は、文字セット/エンコーディングによって異なります。 Unicode文字は2または4バイトであるため、16または32ビットになることがありますが、Windows-1252は誤ってANSIと呼ばれることもありますが、8ビットしかないためです。

アジア版のWindowsなどでは、システム全体が2バイトで実行されるため、文字は16ビットです。

EDITED

パーマッテオさんのコメントには、Windowsのすべての現代的なバージョンは、内部の文字ごとに16ビットを使用します。

+0

一部の従来のアプリケーションでは、ローカルのコードページで1バイトの文字が使用されていますが、すべてのNTバージョンのWindowsは2バイト文字(UCS-2〜NT4、Windows 2000以降のUTF-16、 'wchar_t')アジアだけのものであり、新しいアプリケーションをすべて実行する必要があります。 (Linuxでは、システム全体で通常UTF-8が使用されるので、それはまったく別の話です) –

+0

@Matteo:Windowsでは、2バイトはUnicodeと必ずしも同じではありません。 [参照](http://msdn.microsoft.com/en-us/library/cc194788.aspx) –

+0

@Cody Grey:はい、通常、「2バイト」のコードを読み込むと、それはアジアの古いものであり、保存されます複数の 'char'として、Unicode文字列は' wchar_t'型を使って格納されます。ちなみに、NTが起動されたとき、 'wchar_t'はサロゲートペアを避けるのに十分でしたが、' wchar_t'文字列も可変長文字を持つことができるようになったので、UTF-16であるため、WindowsではUnicode文字を2から4バイト(1または2の 'wchar_t')。 –

98

これは、文字とそれをコードするが何であるかによって異なりにされています。それは7ビットに収まることができますが

  • 8ビットASCIIエンコーディングでASCII文字は、8ビット(1バイト)です。

  • ISO-8859-1エンコーディングのISO-8895-1文字は8ビット(1バイト)です。

  • UTF-8エンコーディングのUnicode文字は、8ビット(1バイト)と32ビット(4バイト)の間です。

  • UTF-16エンコーディングのUnicode文字は、16文字(2バイト)と32ビット(4バイト)の間にありますが、ほとんどの共通文字は16ビットです。これはWindowsで内部的に使用されているエンコーディングです。

  • UTF-32エンコードのUnicode文字は、常に32ビット(4バイト)です。

  • UTF-8のASCII文字は8ビット(1バイト)で、UTF-16-16ビットです。

  • ISO-8895-1(0xA0-0xFF)の追加の(ASCII以外の)文字は、UTF-8とUTF-16で16ビットをとります。

これは、ビットに0.03125〜0.125文字の間にあることを意味します。

+0

この回答は、ソケット、エンコーディング、テキストなどを扱う際に大いに役立ちます。 –

関連する問題