1

私はhttp://www.parashift.com/c++-faq/index.htmlを調べていましたが、バイトは64ビットでもあることがわかりましたhttp://www.parashift.com/c++-faq/very-large- bytes.html。それは可能で、1 バイトのストレージ容量は何に使用されますか?

4

2 に答える 2

7

ポイントは、「それ自体」のビッグバイトの有用性ではありませんが、標準では、バイトはシステムでアドレス指定可能な最小量であるという事実です1。システムが 64 ビットより小さい単位でメモリをアドレス指定できない場合は、64 ビットにcharなります。

明らかに、現代の汎用コンピューターでそのような奇妙なものを見つけることはほとんど不可能です。これらの奇妙なものは、通常はパフォーマンス上の理由から、非常に特殊なハードウェアで発生します (DSP は特にこの種のものになりやすいと聞きました)。

詳細については、この他の FAQを参照してください。


  1. 8 ビットより大きく、基本的な文字セット (英数字といくつかの記号、IIRC) を保持できる限り。
于 2013-01-20T02:27:48.317 に答える
3

あなたが探している重要な定義は CHAR_BIT です。これは、C99 (およびそれに対応する最新の C++ システム) でのみ >=8 であることが保証されています。POSIX では、CHAR_BIT を == 8 にする必要があります。

前述のように、すべてのシステムで 8 に固定されていない本当の理由は DSP です。DSP は、速度のためにアドレス指定メカニズムを簡素化し、アーキテクチャのワード サイズに対して 1 つのアライメントのみを許可します。最新の DSP のほとんどは 16 ビットまたは 32 ビットですが、64 ビットのものもあると思います。

これが問題になるコードが実際にある場合は、CHAR_BIT を使用して、バイトから 8 ビットのチャンクを計算できます。これは、CHAR_BIT==8 プラットフォームで最適化する必要があります。

于 2013-01-20T02:36:16.153 に答える