根据计算机内存和C++来定义'byte'有什么区别?

what is the difference in defining the 'byte' in terms of computer memory and in terms of C++?

本文关键字:byte 什么 区别 定义 计算机 内存 C++      更新时间:2023-10-16

这是参考Stephen Prata的C++ Primer Plus中的文本-

字节表示 8 位内存单位,其度量单位描述计算机中的内存量。但是,C++以不同的方式定义字节。C++字节至少由足够的相邻位组成,以容纳实现的基本字符集。

您能否解释一下,如果C++编译器具有 16 位字节而系统具有 8 位字节,那么程序将如何在此类系统上运行?

关于字节的大小,作者想说的是,引用维基百科:

主要商业计算架构的普及有助于普遍接受 8 位大小。

另一方面,C++的内存单位由内置类型char给出;在某些实现下,char可能不是8位内存块;但是,在你的C++程序中,每个sizeof(T)都将以sizeof(char)的倍数表示,这等于1定义。

特定实现的字节中的位数被记录到宏CHAR_BIT中,在标准标头<climits>内定义。保证char至少为 8 位。

最后,这是C++标准(§1.7,intro.memory(给出的字节定义:

C++内存模型中的基本存储单元是字节。一个字节至少足够大,可以包含 基本执行字符集 (2.3( 和 Unicode UTF-8 的八位代码单元的任何成员 编码形式,由连续的位序列组成,其数量是实现定义的。 最低有效位称为低阶位;最高有效位称为高阶 位。C++程序可用的内存由一个或多个连续字节序列组成。每 字节具有唯一的地址。

字节表示 8 位内存单元。

这是不正确的。

但是,C++以不同的方式定义字节。

这也是不正确的。

在C++术语和一般用语中,字节是内存的最小单位。8 位字节称为八位字节

您能否解释一下,如果C++编译器具有 16 位字节而系统具有 8 位字节,那么程序将如何在此类系统上运行?

不会的。如果为字节为 16 位的体系结构编译程序,则它将不会在具有字节为 8 位的体系结构的计算机上运行。

您必须针对所使用的处理器进行编译。

曾经有机器具有可变的字节大小或小于 8 的字节大小。 该规范使其在给定硬件上开放实现。

DEC PDP-10 具有 36 位字大小,您可以指定字节的大小(通常字为 5 个 7 位字节......

http://pdp10.nocrew.org/docs/instruction-set/Byte.html