根据计算机内存和C++来定义'byte'有什么区别?
what is the difference in defining the 'byte' in terms of computer memory and in terms of C++?
这是参考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
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- ifstream什么都没读
- 在 C++17 中表示 std::byte 文字的正确方法是什么?
- '&'在"std::vector<byte>& stream;"中代表什么
- STD :: BYTE的目的是什么
- PBYTE和BYTE*有什么区别
- 根据计算机内存和C++来定义'byte'有什么区别?
- (BYTE)-1是什么意思?