纯二进制中的标准输出等效吗?

纯二进制中的标准输出等效吗?

嘿嘿大家!

我知道这听起来像是一个非常模棱两可的问题,但我认为这是相关的。首先,让我定义一些术语。

二进制

在这个问题中,意思是计算机本身看到的字面上的 1 和 0 - 电气开关的打开和关闭。我知道表示二进制有不同的方式,但这里我指的是 1 和 0。我的意思绝不是 Linux 可执行文件,但据我了解,Linux 可执行文件确实是一个二进制文件,只是当你使用cat它时,你会得到不同的输出“格式”。再说一遍,我的意思是01010101

位、字节和字符

如果您看到我提到这些,请原谅我的不专业。我知道标准 ASCII 字符是8位或1字节,但有时它可能适合7位。我还了解到 UTF-8 字符的范围可以从8位到位321字节到4字节。这基本上就是我对人物的理解。如果我互换使用这些名称,请不要介意,并且请理解,这是我在该领域的理解极限。此外,当我将一个字符称为 8 位时,我的意思是我理解它可以是 32 位,以及上面提到的所有其他陈词滥调参数。

“电脑”

以后我会提到“计算机”这个词。我真正的意思是CPU,以及其他所有带来和获取输出的东西。我知道一台计算机可能有数百万个零件,我知道电源与下面提到的数据无关,但当我提到“计算机”时,我真正指的是CPU和co。

问题

现在我已经把这个问题说出来了,我想第一次回答这个问题。

stdout原始二进制文件中是否有等效项?

例如,如果我将字母“A”更改为二进制,我将得到01000001.我假设当计算机看到这个时,它会看到一个“A”。有一整套字母表、十个数字和大量具有二进制表示的字符。这些实际上只是大约 81s和的组合0s

现在,我知道二进制文件实际上是“计算机”的一组指令。当我10岁时,我就明白了这一点。我想知道的是,这些指令的表示是什么?如果我接受01000001并转换它,我会得到“A”。那么,“stdout”的二进制文件是什么?

编辑:我认为一个很好的表达方式是“1 和 0 的组合是什么来指示计算机输出 xxx(例如,01000001)”。

老实说,我不确定我是否有道理或想太多。我觉得谈论二进制是计算机语言很愚蠢……但我无法摆脱这个想法。

无论如何,任何能减轻我压力的人都欢迎。提前非常感谢!

答案1

二进制、十六进制、ASCII 甚至 UTF16 和 EBCDIC,都是状态的表示形式。当您将十进制 65(二进制 01000001)写入标准输出这是唯一使它显示为 的约定A。视觉表示很方便。磁盘上的任何地方都找不到A存储的地方;您甚至可能找不到二进制表示形式,因为它将以更适合实现的方式存储。

cat /bin/ls > /tmp/myls
chmod a+x /tmp/myls
/tmp/myls

我想你会同意这/bin/ls是二进制的,cat上面的命令正在写入标准输出。生成的文件/tmp/myls可以完美地替代ls.证明(?)标准输出确实是二进制的。

相关内容