为什么一个字节(以位为单位)的大小是实现定义的并带有该变量?我认为一个字节总是一致的 8 位

Rob*_*rtS 0 c byte bit language-lawyer

在 C 标准 fe(我的参考文献特别是 ISO/IEC 9899:2011 (C11))中,§3.6 规定:

3.6

1 字节

大到足以容纳执行环境基本字符集的任何成员的可寻址数据存储单元

2 注 1 可以唯一地表示对象的每个单独字节的地址。

3 注2一个字节由连续的比特序列组成,其数量由实现定义。最不重要的位称为低位;最重要的位称为高位。

为什么呢?我认为一个字节的大小在信息技术中是绝对固定的,正好由 8 位组成。

为什么标准会做出这种看似疯狂的声明?

另外:如果字节大小不固定,假设 64 位系统,我们如何谈论 fe achar由 8 位和int32 位(4 字节)组成?

chu*_*ica 5

我认为一个字节的大小在信息技术中是绝对固定的,正好由 8 位组成。

不,那是“字节”的演变,现在很常见 8。

其他值 9、16、18、32、64 .... 因各种技术(和商业)原因而出现。它们今天的稀有性确实令人惊讶,CHAR_BIT可能只有 8 个。

Recall C非常便携,适用于广泛的架构。


如果字节大小不固定,假设 64 位系统,我们如何谈论由 8 位组成的 fe 字符和 32 位(4 字节)的 int?

在 C 中,你不能 - 一般来说。Achar可能由 9 位或 64 位等组成。如今这样的系统很少见。

避免“假设 64 位系统”作为将int大小驱动到某个宽度的要求。更多因素适用。