为了账号安全,请及时绑定邮箱和手机立即绑定

哪些平台除了8位字符之外还有别的东西?

哪些平台除了8位字符之外还有别的东西?

C C++
千万里不及你 2019-06-15 18:03:03
哪些平台除了8位字符之外还有别的东西?不时有人这样指出char(又称‘字节’)不一定是8位.好像是8位char几乎是普遍的。我认为对于主流平台来说,有必要有一个8位。char以确保其在市场上的生存能力。现在和历史上,哪些平台使用char这不是8位,为什么他们会区别于“正常”8位呢?在编写代码和考虑跨平台支持(例如通用库)时,对于非8位平台来说,值得考虑的是什么?char?在过去,我遇到过一些模拟设备DSPchar是16位。我认为DSP是一种利基体系结构。(再说一遍,当时手工编码的汇编程序很容易就击败了可用的C编译器,所以我在那个平台上并没有真正获得使用C的经验。)
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

char也是德州仪器C54x DSP上的16位,例如在OMAP 2中出现。还有其他带有16位和32位的dsp。char..我想我甚至听说过24位数字信号处理器,但我不记得是什么,所以可能是我想象出来的。

另一个考虑是POSIX的任务CHAR_BIT == 8..因此,如果您使用的是POSIX,您可以假设它。如果以后有人需要将您的代码移植到近似于POSIX的实现,那么您所使用的函数恰好是不同大小的函数。char那是他们的坏运气。

不过,总的来说,我认为围绕这一问题的工作几乎总是比思考容易得多。只是打字CHAR_BIT..如果您想要精确的8位类型,请使用int8_t..您的代码将无法在不提供实现的实现上编译,而不是默默地使用您意想不到的大小。至少,如果我遇到了一个我有充分理由去假设的案例,我就会断言它。


查看完整回答
反对 回复 2019-06-15
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

在编写代码和考虑跨平台支持(例如通用库)时,对于具有非8位字符的平台,值得考虑的是什么?

与其说它“值得考虑”,倒不如说它是按照规则来玩的。例如,在C+中,标准说所有字节都“至少”有8位。如果您的代码假设字节正好有8位,那么您就违反了标准。

这听起来可能有点傻了-“当然了所有的字节都有8位!“,我听到你这么说,但是很多非常聪明的人都依赖那些无法保证的假设,然后一切都破裂了。历史上充满了这样的例子。

例如,大多数90年代早期的开发人员都认为,一个特定的非OP CPU定时延迟需要固定的时钟时间,因为大多数消费者CPU的功率大致相等。不幸的是,计算机变得更快了。这催生了带有“涡轮”按钮的盒子的兴起-具有讽刺意味的是,其目的是减缓计算机的速度,以便使用延时技术的游戏能够以合理的速度播放。


一位评论者问道,在标准中,char必须至少有8位。在部分5.2.4.2.1..本节定义CHAR_BIT最小可寻址实体中的位数,默认值为8。它还表示:

它们的实现定义值应等于或大于所显示的值(绝对值),并具有相同的符号。

因此,任何等于8或更高的数字都适合被实现替换为CHAR_BIT.


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 444 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信