C 语言的比特(bit), 字节(byte), 字(word)

比特(bit), 字节(byte), 字(word)

各种数据在内存中即内存条上都是以二进制形式来存储的. 输入计算机的内容要从所输入的形式转化为二进制形式, 将计算机的内容输出也是从二进制形式转化为要输出的形式.

内存条包含很多个元器件, 每个元器件都有两种电压状态, 即 0V 和 5V. 5V 为高电压, 表示通电, 在计算机中用 1 来表示, 0V 是低电压, 表示断电, 在计算机中用 0 来表示. 所以一个元器件有 2 种状态, 即 0 或 1.

通过控制多个元器件各自的通断电状态就得到多个 0, 1 的组合. 例如, 8 个元器件有 28=256 种不同的组合, 16 个元器件有 216=65536 种不同的组合.

可以给每一种组合赋予特定的含义, 例如规定组合 1101000 表示字符’你’, 规定组合 01010101 表示字符’好’, 则这两个组合合起来 1101000 01010101 就表示"你好".

一般情况下并不一个一个地使用元器件, 而是将 8 个元器件作为一组, 看做一个单位, 即使某个需要表示的指令需要的元器件少于 8 个, 也用 8 个表示, 多余的元器件则空置不用. 例如数字1 表示为 00000001.

1 个元器件称为 1 比特(bit)或 1 位, 1 位存储数字 1 或 0, 位是计算机最小的存储单位, 是计算机的基本构建块.

字节的定义是 8 位, 即 8 个元器件称为 1 字节(byte), 有 28=256 种不同的组合, 即一个字节可以表示 0-255之间的整数.

但 C 语言对字节定义有所不同, C 语言规定一个字节是 char 类型占用的位数. 一般而言, char 类型占用 8 位, 即一个字节是 8 位, 但如果用到基本字符集或其他大的字符集, 也可以是 16 位或更多, 但一定是 8 的整数倍. 因此, char 类型始终占用一个字节, 一般是 8 位, 也可能是更多位, 但一定是 8 的整数倍.

内存编址以字节为单位, 一个字节对应一个编址.

单位换算:

  • 8×1024 个元器件是 1024Byte, 简写为 1KB;

  • 8×1024×1024 个元器件是 1024KB, 简写为 1MB;

  • 8×1024×1024×1024 个元器件是 1024MB, 简写为 1GB.

  • 1Byte = 8 Bit

  • 1KB = 1024Byte = 210Byte

  • 1MB = 1024KB = 220Byte

  • 1GB = 1024MB = 230Byte

  • 1TB = 1024GB = 240Byte

  • 1PB = 1024TB = 250Byte

  • 1EB = 1024PB = 260Byte

字是设计计算机时给定的自然存储单位, 如 64 位计算机中一个字是 64 位. 字长越大数据转移就越快.

你可能感兴趣的:(C,语言,c语言)