字节的大小可以大于八位字节8位

时间:2013-01-20 02:22:35

标签: c++ byte

我正在经历http://www.parashift.com/c++-faq/index.html,在那里我发现该字节也可以是64位http://www.parashift.com/c++-faq/very-large-bytes.html。是否有可能以及一个字节的大量存储容量的用途是什么?

2 个答案:

答案 0 :(得分:7)

关键不是大字节“本身”的用处,而是对于标准来说,一个字节是系统 1 上的最小可寻址数量;如果系统无法以小于64位的单位寻址其内存,则char将为64位。

显然,在现代通用计算机上找到这些奇怪的东西几乎是不可能的,这些奇怪的东西出现在非常专业的硬件上(我听说DSP特别容易出现这种情况),通常是出于性能原因。

您可以在this other FAQ中看到更多相关信息。


  1. 只要大于8位且能够保存一组基本字符(字母数字字符加上一些符号,IIRC)。

答案 1 :(得分:3)

您正在寻找的键定义是CHAR_BIT,它仅在C99(以及相应的现代C ++系统)中保证为> = 8。 POSIX要求CHAR_BIT == 8。

如上所述,所有系统不仅仅固定为8的真正原因是DSP,它简化了速度的寻址机制,只允许一个对齐架构字大小。大多数现代DSP都是16位或32位,但我想有些也是64位。

如果您确实拥有重要的代码,可以使用CHAR_BIT从字节计算8位块,这应该在CHAR_BIT == 8平台上进行优化。