首页 > 解决方案 > 计算机如何解释数据

问题描述

当我想到输入数据在计算机中的解释方式时,我感到很困扰。我搜索了很多,但找不到答案,所以作为最后的手段,我在这里问。我要说的是,您将 USB 插入计算机并开始数据流。您的计算机从 USB 接收 1 和 0 并正确解释它们,例如在 USB 内部有不同名称、不同格式和分辨率的图片。我不明白的是计算机如何正确地将它们组合在一起并出现大局。这可能被视为一个愚蠢的问题,但让我思考了一段时间。这个系统是如何工作的?

我不是计算机科学家,但我正在学习电气和电子工程并且知道一些事情。

标签: interpretation

解决方案


它只是一串零和一串,它们被计入字节。正如您可能知道的那样,可以对它们进行多路复用,但使用不是非常必要的现代硬件(USB 中的“s”代表“串行”)

“A”的纯黑白图像将是一个二维数组:

111
101
111
101
101

3x5 字体

我猜“A”存储在字体文件中111101111101101,已知长度为 3*5=15 位。

当显示在窗口中时,该 A 将被分解为行,并插入到窗口的相应行上,成为可能包含 320x256 像素的流。

当数据长度不固定时,可以:

  • 如果有最大大小,可能是最大大小的大小(整数和其他原始数据类型这样做,a0需要 32/64 位,也是如此400123
  • 长度包含在某处,通常是一种“标题”
  • 它被分成恒定或可变大小的块,并有一个继续位(UTF-8 是恒定块的一个很好的简单示例,一些网络协议(可能是 TCP/IP)是可变块的一个很好的示例)

双方都需要知道如何解码数据,在您的带有图像的 USB 记忆棒示例中。操作系统有一个驱动程序,它理解 UUID 是一个存储设备,并尝试从中读取特殊扇区。如果它检测到它识别的分区类型(对于 NTFS 或 FAT32 的 Windows),它将加载文件表,使用了解如何解码这些文件表的驱动程序。它发现一个文件名允许通过该文件名进行访问。然后图像读取程序能够加载该文件的字节流并使用其标题对其进行解码并将编解码器安装到光栅图像阵列中。如果这些部分在您的系统中不可用,您将无法查看图像,并且它只是您的任何随机二进制文件(如果您使用 Linux 格式化 USB 记忆棒,或使用不常见/旧的图像格式)

因此,当您到达更高级别时,它所有不同级别的显式或隐式握手就数据是什么达成一致(更高级别至少在您同意数据传输的字节顺序和波特率时)


推荐阅读