c - 为什么一个字节的大小(以位为单位)实现定义并带有该变量?我认为一个字节始终是 8 位
问题描述
在第 3.6 节下的 C 标准 fe(我的参考特别是 ISO/IEC 9899:2011 (C11))中说明:
3.6
1 个字节
可寻址的数据存储单元,大到足以容纳执行环境的基本字符集的任何成员
2 注 1 可以唯一地表示对象的每个单独字节的地址。
3 注 2字节由连续的位序列组成,其数量由实现定义。最低有效位称为低位;最高有效位称为高位。
为什么呢?我认为一个字节的大小在信息技术中是绝对固定的,由 8 位组成。
为什么标准会做出这种看似疯狂的声明?
另外:如果字节大小不固定,假设 64 位系统,我们如何谈论 fe achar
由 8 位和32 位(4 字节)组成?int
解决方案
我认为一个字节的大小在信息技术中是绝对固定的,由 8 位组成。
不,那是“字节”的演变,现在通常是 8。
其他值 9、16、18、32、64 .... 由于各种技术(和业务)原因而出现。它们今天的稀有性确实令人惊讶,它CHAR_BIT
可能不是 8 个。
Recall C非常便携,适用于各种架构。
如果字节大小不固定,假设 64 位系统,我们如何谈论 fe 一个 char 由 8 位和一个 32 位(4 字节)的 int 组成?
在 C 中,你不能 - 通常。可能是 9 位或 64 位等。char
这些天这样的系统很少见。
避免将“假设为 64 位系统”作为将int
大小驱动到某个宽度的要求。更多的因素适用。
推荐阅读
- reactjs - 在 Github Pages 上更改为自定义域会导致带有 react-router 的 create-react-app 停止工作
- python - 如何从字符串列表中删除 \n
- javascript - js在循环内设置随机值
- javascript - 在购物车应用程序中选择项目后反应动态搜索栏不更新列表
- python - 我怎样才能找到有多少硬盘或固态硬盘有一台电脑
- label - 移除掩码中的小对象并在 for 循环外生成新的二进制掩码
- c# - MVC 根据另一个表的 id 创建一个列表视图
- r - 使用自定义评估方案评估 Moodle 中的考试
- ruby-on-rails - left_join 同一张表两次
- python - 如何使用 cqlengine 在 Cassandra 中定义冻结列?