【问题标题】:How does a computer store decimal point values? [closed]计算机如何存储小数点值? [关闭]
【发布时间】:2013-02-04 23:55:54
【问题描述】:

我有几个问题:

  1. 计算机仅使用 1 和 0 来表示数字。那么5.512这样的小数点怎么表示呢。

  2. 计算机不知道我们输入的是 ASCII 值还是只是一个随机二进制文件来处理。在早期,人们习惯于使用十六进制和二进制进行编程。他们将如何在屏幕上输出一个字符。除此之外,计算机如何理解65(十进制)不是数字而是大写A?

【问题讨论】:

  • 谷歌第一,所以第二。这些是您可以自己回答的基本问题。
  • SO 没有第二个答案,但我猜,你能给我一个链接吗?谢谢另一个。
  • 在人们用二进制编程的时代,他们没有屏幕。所有输出都是二进制的。眨眼。或者它是写在卡片上或打印机上的。程序员知道他在打印什么,因此解释了输出。

标签: binary hex computer-science computer-architecture


【解决方案1】:

关于您的第一点,请参阅IEEE754-1985 Wikipedia page 了解一种方法(可能是最常见的方法)。

对于第二点,您需要意识到值与该值的表示之间存在脱节。一个值可以以一种方式存储并以多种不同方式进行解释。

例如,八位字节 0x30, 0x31 可以表示为大端 16 位值中的值 0x3031、小端中的 0x3130 或 ASCII 中的字符序列 '0', '1'。如果将其视为 EBCDIC 或定点值,则又是另外一回事了。

这一切都取决于您如何解释数据。

【讨论】:

  • 我同意它以不同的方式解释,但您正在谈论 2 个值之间的断开连接。不幸的是,断开连接只能是 1 或 0。那么关键的问题是,计算机如何识别它是断开连接而不是值?
  • @Total,您正在尝试协调两个不同的抽象级别。这是通过某种映射完成的。正如您所设想的那样,计算机没有“断开连接”的概念。你给它数据,你告诉它如何解释这些数据,不涉及智能。你不会给 CPU 一个 4 字节的内存块并要求它弄清楚它是什么——你告诉它是什么,如果你说错了,所有使用它的人都会有祸了你的程序:-)
  • 大声笑。好的,现在我明白了。非常感谢@paxdiablo
  • 我会将您的答案标记为正确答案,但您能帮我解决您提到的“某种映射”吗?
  • @Total,我的意思是视频卡会将八位字节 65 映射到屏幕上的特定模式,A。处理 IEEE754 的 CPU 在操作时会以某种方式处理四字节浮点数和八字节双精度数。 CPU 中的 ALU 将知道如何处理 16 位小结尾短路,以便成功添加它们。这就是我所说的映射,原始内容的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2010-09-16
  • 2012-11-26
相关资源
最近更新 更多