C 语言的比特, 字节和字
比特, 字节, 字
各种数据在内存中即内存条上都是以二进制形式来存储的. 输入计算机的内容要从所输入的形式转化为二进制形式, 将计算机的内容输出也是从二进制形式转化为要输出的形式.
内存条包含很多个元器件, 每个元器件都有两种电压状态, 即 0V 和 5V. 5V 为高电压, 表示通电, 在计算机中用 1 来表示, 0V 是低电压, 表示断电, 在计算机中用 0 来表示. 所以一个元器件有 2 种状态, 即 0 或 1.
通过控制多个元器件各自的通断电状态就得到多个 0, 1 的组合. 例如, 8 个元器件有 28 = 256 种不同的组合, 16 个元器件有 216 = 65536 种不同的组合.
可以给每一种组合赋予特定的含义, 例如规定组合 1101000 表示字符 '你', 规定组合 01010101 表示字符 '好', 则这两个组合合起来 110100001010101 就表示 "你好".
一般情况下并不一个一个地使用元器件, 而是将 8 个元器件作为一组, 看做一个单位, 即使某个需要表示的指令需要的元器件少于 8 个, 也用 8 个表示, 多余的元器件则空置不用. 例如数字1 表示为 00000001.
1 个元器件称为 1 比特或 1 位, 1 位存储数字 1 或 0, 位是计算机最小的存储单位, 是计算机内存的基本构建块.
字节的定义是 8 位, 即 8 个元器件称为 1 字节, 有 28 = 256 种不同的组合, 即一个字节可以表示 [0, 255] 之间的整数.
但 C 语言对字节定义有所不同, C 语言规定一个字节是 char 类型占用的位数. 一般而言, char 类型占用 8 位, 即一个字节是 8 位, 但如果用到基本字符集或其他大的字符集, 也可以是 16 位或更多, 但一定是 8 的整数倍. 因此, char 类型始终占用一个字节, 一般是 8 位, 也可能是更多位, 但一定是 8 的整数倍.
内存编址以字节为单位, 一个字节对应一个编址.
单位换算:
-
8×1024 个元器件是 1024 Byte, 简写为 1 KB;
-
8×1024×1024 个元器件是 1024 KB, 简写为 1 MB;
-
8×1024×1024×1024 个元器件是 1024 MB, 简写为 1 GB.
-
1Byte = 8 Bit
-
1KB = 1024Byte = 210 Byte
-
1MB = 1024KB = 220 Byte
-
1GB = 1024MB = 230 Byte
-
1TB = 1024GB = 240 Byte
-
1PB = 1024TB = 250 Byte
-
1EB = 1024PB = 260 Byte
字是设计计算机时给定的自然存储单位, 如 64 位计算机中一个字是 64 位. 字长越大数据转移就越快, 允许访问的内存也更多.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术