【问题标题】:problems when data transfer between different computer architectures [closed]不同计算机架构之间数据传输时的问题[关闭]
【发布时间】:2012-07-02 08:33:41
【问题描述】:

我有一个关于在不同计算机架构之间传输数据的问题。 在这个过程中具体转换integer、float和char类型的数据会出现什么样的问题?您能否提供有关这些特定类型的简要信息?

我搜索了它,但找不到任何必要的信息。 任何信息将不胜感激。提前致谢。

【问题讨论】:

  • 我不认为这是一个特定的程序。很笼统。您能否指定源拱门和目标拱门的样子?
  • 是的,其实很笼统,​​但我的老师问了这个问题,我想她只是想让我谈谈传输时可能出现的一般问题,整数数据、浮点数据和字符数据分别会发生什么?转移如何影响它们?例如数据可以用零填充,等等......
  • 了解 big endianlittle endian 架构,并考虑每种整数类型的字节大小。
  • @user1349536 如果您不希望我们为您写一本书,这里不适合提出一般性问题。
  • 查看数字舍入和字符截断等内容。还有如何以不同方式处理空值等。

标签: architecture distributed-computing data-transfer computer-architecture


【解决方案1】:

在现代机器的架构之间移植代码的最大区别是:

  1. 指针的大小:例如 32 位与 64 位。
  2. long 的大小:通常与指针的大小相同。
  3. 字节顺序:大端或小端(或一些古代机器是中端)。
  4. 二进制浮点与十进制浮点:十进制浮点是 2008 年添加的最新标准。这不是常见问题,但许多机器不支持硬件(只有 IBM Power 机器吗?)用于十进制浮点并具有仿真库。

在谈论真正的旧机器时,还有几件事:

  1. 机器字的长度:与指针大小有关
  2. 一个字节中的位数:现在标准化为 8,但 40 多年前,情况并非如此。
  3. 浮点数的表示。在 IEEE-754 之前,没有标准,不同的机器有不同的表示。具有两种浮点类型的 VAX 可能是最著名的例子之一。
  4. 负数的表示。今天的机器使用二进制补码。 Cray 1 以使用补码而著称。

【讨论】: