私の知る限り、Cの最小単位はbyteです。この制約はどこから来るのですか?CPU?
たとえば、ファイルにnibbleまたはシングルを書き込むにはどうすればよいですか?bit
いいえ、できません...ファイルはバイト単位で編成されています。これは保存できる最小のデータです。
そして、実際には、その1バイトは一般に1バイト以上のスペースを占有します。OS、システムファイルの種類などに応じて、ファイルとして保存するものはすべて、少なくとも1つのブロックを使用します。また、ブロックのサイズは、使用しているファイルシステムによって異なります。次に、この1ビットは1バイトとして書き込まれ、ディスクの4kBを占める可能性があります。
ウィキペディアでは、バイトが多くのコンピューターで最小のデータ単位であることについて何かを読むことができます。
実は、これはchar-byte標準のCタイプではありません。
制約はC標準に由来し、トートロジー的ですchar。Cで定義されているため、Cで最小の完全な型であり、他のすべての型のサイズは、のサイズの倍数として定義されますchar(サイズは常に1です)。
現在、aのビットchar数はプラットフォームごとに異なります。最近のほとんどのシステムは8ビットを使用していますが、ビット数は最終的にハードウェアで定義される傾向がありますchar。charは、アドレス可能な最小のメモリ単位を表すことになっています(これも定義上)。
さらに、データはセクター単位のファイルに書き込まれます(たとえば、512バイト程度)。また、1バイトだけを変更する必要がある場合は、セクター全体が読み取られ、パッチが適用され、書き戻されます。
しかし、セクターについて考える必要はありません。1ビットを変更するには、ファイル内の適切なバイト位置を探し、そのバイトを読み取り、ビットを変更して、結果を書き戻します。
取得できる最小値は1バイトです。これは、バイナリで1つに相当します。1だけを含むbinary.binというファイルを保存すると、1バイトかかります