这是参考Stephen Prata的C ++ Primer Plus文本 -
字节表示计量单位意义上的8位存储单元,用于描述计算机中的存储量。 但是,C ++以不同方式定义字节。 C ++字节至少包含足够的相邻位,以适应实现的基本字符集。
你能解释一下C ++编译器是否有16位字节,而系统有8位字节,那么程序将如何在这样的系统上运行?
答案 0 :(得分:16)
作者想要说的关于字节大小的内容是引用Wikipedia:
主要商业计算架构的普及有助于无处不在地接受8位大小。
另一方面,C ++中的内存单位由内置类型char
给出;在某些实现中,char
可能不是8位内存块;但是,在您的C ++程序中,每个sizeof(T)
将以sizeof(char)
的倍数表示,根据定义,它等于1
。
特定实现的字节中的位数记录在宏CHAR_BIT
中,在标准头<climits>
内定义。保证char
至少为8位。
最后,这是C ++标准(§1.7, intro.memory )给出的 byte 的定义:
C ++内存模型中的基本存储单元是字节。一个字节至少足以容纳 基本执行字符集(2.3)的任何成员和Unicode UTF-8的8位代码单元 编码形式由连续的比特序列组成,其数量是实现定义的。 最低有效位称为低位;最重要的位称为高位 位。 C ++程序可用的内存由一个或多个连续字节序列组成。一切 byte有一个唯一的地址。
答案 1 :(得分:6)
一个字节表示一个8位的内存单元。
这是不正确的。
但是,C ++以不同的方式定义字节。
这也是不正确的。
在C ++术语和一般用语中,字节是最小的内存单位。 8位字节称为 octet 。
你能解释一下C ++编译器是否有16位字节,而系统有8位字节,那么程序将如何在这样的系统上运行?
不会。如果为一个字节为16位的体系结构编译程序,它将无法在具有字节为8位的体系结构的计算机上运行。
您必须为正在使用的处理器进行编译。
答案 2 :(得分:3)
曾经有一些机器具有可变字节大小或字节大小小于8.规范使它在给定硬件上实现开放。
DEC PDP-10的字长为36位,你可以指定一个字节的大小(通常是字的5个7位字节......)