2012-07-21 133 views

回答

3

你还没有说过你正在使用什么操作系统。但一般来说,写入文件的最小单位是一个8位字节。如果你想写个人位,你需要在你自己的代码中将它们组装成字节。我不知道有哪些操作系统的文件IO设施允许写入各个位。

+1

RAM和磁盘甚至不能*存储*个别位。任何非深奥计算机上的最小可寻址单元都是一个8位字节。 – Wyzard 2012-07-21 00:15:09

+0

现代RAM硬件中的* real *最小可寻址单元是64位;对于光盘,通常是512或4096字节。只是发生在CPU方便地让你假装RAM可以按字节访问,并且操作系统让你假装可以按字节访问光盘。所以RAM和光盘不能存储单独的位而不能存储单个字节的情况并非如此。 :-) – 2012-07-21 00:26:16

0

不,没有,至少不是直接的。 C的二进制文件I/O模型是它们是字节序列(通常是8位)。

您可以在自己的代码中编写一个函数,该函数需要一个1位的值并将这些位收集到一个字节中,并在接收到8位时将它们写入文件。如果字节值尚未归档,您还需要在最后进行额外的写操作。

不可能写出部分字节;如有必要,你可以用零填充最后一个字节。

(C标准需要一个字节是至少 8位,但它允许它要多。由CHAR_BIT指定位的一个字节的数字,在<limits.h>定义。CHAR_BIT将是准确8在您可能遇到的任何系统上。)

0

计算机体系结构不允许您分割字节,即8位。个人电脑工作在8位。图灵的巨像工作了5位(因为在Baudot的代码中,数字2^5就足够了)。

微处理器没有处理小于一个字节的单位的指令(甚至比特操作像或在1,2,4,8位上使用)。