17

私の知る限り、Cの最小単位はbyteです。この制約はどこから来るのですか?CPU?

たとえば、ファイルにnibbleまたはシングルを書き込むにはどうすればよいですか?bit

4

4 に答える 4

22

いいえ、できません...ファイルはバイト単位で編成されています。これは保存できる最小のデータです。

そして、実際には、その1バイトは一般に1バイト以上のスペースを占有します。OS、システムファイルの種類などに応じて、ファイルとして保存するものはすべて、少なくとも1つのブロックを使用します。また、ブロックのサイズは、使用しているファイルシステムによって異なります。次に、この1ビットは1バイトとして書き込まれ、ディスクの4kBを占める可能性があります。

ウィキペディアでは、バイトが多くのコンピューターで最小のデータ単位であることについて何かを読むことができます。

于 2011-07-14T23:42:23.340 に答える
9

実は、これはchar-byte標準のCタイプではありません。

制約はC標準に由来し、トートロジー的ですchar。Cで定義されているため、Cで最小の完全な型であり、他のすべての型のサイズは、のサイズの倍数として定義されますchar(サイズは常に1です)。

現在、aのビットchar数はプラットフォームごとに異なります。最近のほとんどのシステムは8ビットを使用していますが、ビット数は最終的にハードウェアで定義される傾向がありますcharcharは、アドレス可能な最小のメモリ単位を表すことになっています(これも定義上)。

于 2011-07-14T23:44:09.107 に答える
4

さらに、データはセクター単位のファイルに書き込まれます(たとえば、512バイト程度)。また、1バイトだけを変更する必要がある場合は、セクター全体が読み取られ、パッチが適用され、書き戻されます。

しかし、セクターについて考える必要はありません。1ビットを変更するには、ファイル内の適切なバイト位置を探し、そのバイトを読み取り、ビットを変更して、結果を書き戻します。

于 2011-07-14T23:43:49.107 に答える
-4

取得できる最小値は1バイトです。これは、バイナリで1つに相当します。1だけを含むbinary.binというファイルを保存すると、1バイトかかります

于 2020-03-28T18:49:12.300 に答える