C ++ Byte依赖于实现

时间:2014-08-09 20:49:09

标签: c++ byte bit

我一直在阅读C Primer Plus。

据说: 请注意,byte的含义取决于实现。因此,一个2字节的int在一个系统上可以是16位,在另一个系统上可以是32位。

我认为我不确定这一点。根据我的理解,1个字节总是= 8位,所以2-byte int = 2 * 8 = 16 bits是有意义的。但是从这个声明来看,听起来有些系统定义了1个字节= 16位。那是对的吗? 一般来说,我应该如何理解这一陈述?

4 个答案:

答案 0 :(得分:7)

C ++标准第1.7节第1点证实了这一点:

  

C ++内存模型中的基本存储单元是字节。的 甲   byte至少足以包含basic的任何成员   执行字符集(2.3)和8位代码单元   Unicode UTF-8编码形式,由一个连续的序列组成   位数, 实现定义 。 (......)   C ++程序可用的内存由一个或多个组成   连续字节序列。每个字节都有一个唯一的地址。

答案 1 :(得分:4)

字节总是由至少 8位组成。它们可能大于8位,但这种情况并不常见。

答案 2 :(得分:3)

一个字节并不总是8位。在八位字节之前(如果要显式引用8位字节,则需要使用的术语),有4位,6位和7位字节。出于[现代]编程的目的(几乎任何语言),你可以假设它至少是8位。

答案 3 :(得分:2)

历史上,一个字节并不总是8位。今天它是,但很久以前,它可能是6,7,8,9 ...所以有一种语言可以利用硬件的细节(为了提高效率),但仍然让用户表达自己更高一点在语言级别上,他们必须确保int类型被映射到最适合硬件的地方。