Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字节的大小是否可以大于八位字节8位_C++_Byte - Fatal编程技术网

C++ 字节的大小是否可以大于八位字节8位

C++ 字节的大小是否可以大于八位字节8位,c++,byte,C++,Byte,我通过检查发现字节也可以是64位。有可能吗?一个字节占用这么多的存储容量有什么用?关键不在于大字节“本身”的用处,而在于,对于标准,一个字节是系统上最小的可寻址数量1;如果系统不能以小于64位的单位寻址其内存,则char将为64位 显然,在现代通用计算机上几乎不可能找到如此奇怪的东西,这些奇怪的东西在非常专业的硬件上出现(我听说DSP特别容易使用这种东西),通常是出于性能原因 您可以在中看到更多关于此的信息 远大于8位,并且能够保存一组基本字符(字母数字字符加上一些符号,IIRC) 你所寻找的

我通过检查发现字节也可以是64位。有可能吗?一个字节占用这么多的存储容量有什么用?

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

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

您可以在中看到更多关于此的信息


  • 远大于8位,并且能够保存一组基本字符(字母数字字符加上一些符号,IIRC)

  • 你所寻找的密钥是CARYBIT,它只在C99(和相应的现代C++系统)中保证为>=8。POSIX要求字符位为==8

    如前所述,并非所有系统都固定为8的真正原因是DSP,它简化了寻址机制以提高速度,只允许对体系结构字大小进行一次对齐。大多数现代DSP都是16位或32位的,但我想有些也是64位的


    如果您确实有这方面的代码,您可以使用CHAR\u-BIT从字节计算8位块,这应该在CHAR\u-BIT==8平台上进行优化。

    理论上这是可能的。实际上,找一个64位字符是不可能的。我听说在开发克雷的第一个C编译器的早期,他们有一个64位的
    char
    ,但当他们发布它时,他们显然已经解决了这个问题。@blacktomado-还有一些较旧的系统,它们的字长不是8位的倍数,语言委员会喜欢在这样的系统上允许现有的实现。请参见保证
    sizeof(char)==1
    是正确的,但是增加
    char*
    会使该系统上的内存增加
    char
    的“实际大小”吗?或者通过
    1
    ,即使“字节”更大?@leemes:“1”什么?它增加指向下一个可寻址内存位置的指针,因为这正是char的定义。另外,sizeof(char)的定义是1,因为sizeof使用char作为度量单位来度量东西。是的,我想我现在明白了。谢谢;)递增
    char*
    始终使其指向下一个字符,并将其前进一个字符。因此,如果一个
    char
    是16位而不是8位,那么向指针添加一个字符将使它指向下一个16位字符,而不是下一个8位字符。这仍将是1的增量。@leemes:这并不是特别悲惨,这样一个系统上的所有库函数都将使用这些“大”字符,因此读取原始对象的代码几乎没有差别(除非您明确依赖于某个地方每个字节有8位)。不过,请记住,大于8位的字节非常罕见——除非您在奇怪的嵌入式平台上工作,否则您不必担心它。