从我在堆栈溢出上搜索并找到的内容中,我看到一个字符总是1字节。这是肯定的。但是,我也看到它可能不是8位(可能更大,参见CHAR_BITS)。这是否意味着,如果它是,例如,10位,在某些假设的架构中,那么1字节= 10位?这是否意味着如果实现默认整数为4个字节,那么int的大小将是40位吗?尽管互联网上的线程数量惊人,但我对所有这些比特字节的变化都有些动摇。
发布于 2017-10-03 02:09:59
对于现代平台,这些大小是可预测的,字节是8位,int是4或8个字节,依此类推。“字节”的定义和实现不太可能改变,因为20世纪70年代引入了8位CPU,这使得ASCII战胜了相互竞争的标准。在法语中,“字节”这个词是“八重奏”。
对于历史平台,所有的赌注都取消了。有些使用10、12、18或36位整数。早期的计算机根本不使用字节,而是使用任意大小的单词。事物是由这些单位组成的,其中一个“双字”值可能是48位,无论出于什么原因。这是从一个时代,一位可能代表几个真空管或全尺寸晶体管,所以实际的成本考虑导致一些非常不寻常的设计。
现在,当谈到字符时,它们不一定是一个字节。在UNICODE中,它们可能更多,特别是当表示为UTF-8,UTF-16或UTF-32,这类文本的常见编码方法。只有在像Latin1这样的8位编码中,字符和字节才是可互换的。
重要的是要考虑到,虽然大多数消费CPU在大小上是相当一致的,但是在处理像DSP或自定义FPGA处理器这样的专用设备时,这一切都是不可能的。
好消息是,您不太可能在基于异常寄存器大小的DSP或自定义FPGA处理器上进行字符处理。这些数据通常集中于处理其他类型的数字数据。
https://stackoverflow.com/questions/46536171
复制相似问题