首页 > 解决方案 > 为什么一个字节的大小(以位为单位)实现定义并带有该变量?我认为一个字节始终是 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

标签: cbytelanguage-lawyerbit

解决方案


我认为一个字节的大小在信息技术中是绝对固定的,由 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大小驱动到某个宽度的要求。更多的因素适用。


推荐阅读