我正在浏览http://www.parashift.com/c++-faq/index.html,在那里我发现字节也可以是 64 位http://www.parashift.com/c++-faq/very-large-字节.html。有可能吗?一个字节这么多的存储容量有什么用?
问问题
390 次
2 回答
7
关键不是大字节“本身”的用处,而是事实上,对于标准,一个字节是系统上最小的可寻址数量1;如果系统不能以小于 64 位的单位寻址其内存,char
则将是 64 位。
显然,在现代通用计算机上几乎不可能找到这种奇怪的东西,这些奇怪的东西出现在非常专业的硬件上(我听说 DSP 特别容易出现这种东西),通常是出于性能原因。
您可以在其他常见问题解答中查看更多相关信息。
- 大于 8 位并且能够保存一组基本字符(字母数字字符加上一些符号,IIRC)。
于 2013-01-20T02:27:48.317 回答
3
您正在寻找的关键定义是 CHAR_BIT,它仅在 C99(以及相应的现代 C++ 系统)中保证 >=8。POSIX 要求 CHAR_BIT == 8。
如前所述,并非所有系统都将其固定为 8 的真正原因是 DSP,它简化了它们的寻址机制以提高速度,只允许对架构字长进行一次对齐。大多数现代 DSP 都是 16 位或 32 位的,但我想有些也是 64 位的。
如果您确实有重要的代码,您可以使用 CHAR_BIT 从字节计算 8 位块,这应该在 CHAR_BIT==8 平台上进行优化。
于 2013-01-20T02:36:16.153 回答