It is possible to write less than 1 byte to a file

前端 未结 4 2021
忘了有多久
忘了有多久 2021-02-19 09:00

As far as I know the smallest unit in C is a byte. Where does this constraint comes from? CPU?

For example, how can I write a nibble or a singl

相关标签:
4条回答
  • 2021-02-19 09:40

    The smallest you can get is 1 byte. That's as much as one 1 in binary. If you save a file called binary.bin that just contains a 1, that will take 1 byte

    0 讨论(0)
  • 2021-02-19 09:40

    no, you can't... files are organized in bytes, it's the smallest piece of data you can save.

    And, actually, that 1 byte will occupy more than 1 byte of space, in general. Depending on the OS, the system file type, etc, everything you save as a file will use at least one block. And the block's size varies according to the file system you're using. Then, this 1-bit will be written as 1 - byte and can occupy as much as 4kB of your disk.

    In wikipedia you can read something about the byte being the smallest data unit in many computers.

    0 讨论(0)
  • 2021-02-19 09:47

    Moreover data is written to files in sectors (e.g. 512 bytes or so). And if we need to change only one byte the whole sector is read, patched and written back.

    But you don't need to thinkabout sectors. To Change one bit just seek to apropriate byte position in file, read that byte, change the bit and write the result back.

    0 讨论(0)
  • 2021-02-19 09:54

    Actually, it's a char--byte is not a standard C type.

    The constraint comes from the C standard and is tautological: char is the smallest complete type in C because it is defined as such, and the sizes of all other types are defined as multiples of the size of char (whose size is always 1.)

    Now, the number of bits in a char can vary from platform to platform. The number of bits tends to ultimately be hardware-defined, though most systems these days use 8-bit chars. char is supposed to represent the smallest addressable unit of memory (again, by definition.)

    0 讨论(0)
提交回复
热议问题