首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的位、字节、字符和整数大小

C中的位、字节、字符和整数大小
EN

Stack Overflow用户
提问于 2017-10-03 02:03:49
回答 1查看 343关注 0票数 3

从我在堆栈溢出上搜索并找到的内容中,我看到一个字符总是1字节。这是肯定的。但是,我也看到它可能不是8位(可能更大,参见CHAR_BITS)。这是否意味着,如果它是,例如,10位,在某些假设的架构中,那么1字节= 10位?这是否意味着如果实现默认整数为4个字节,那么int的大小将是40位吗?尽管互联网上的线程数量惊人,但我对所有这些比特字节的变化都有些动摇。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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处理器上进行字符处理。这些数据通常集中于处理其他类型的数字数据。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46536171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档