脚本中的二进制文件是什么样的?

时间:2014-05-08 02:40:21

标签: syntax binary

我实际上到处寻找,并且人们可以教我如何用二进制代码编写单个数字,字母,符号等等,但我实际上并没有在语法上看到它看起来像什么。加法,减法,拼写单词或其他类似的东西。 1和0的每个组合之间是否有空格,加号和减号的组合,还是逐行?这似乎是一件难以找到答案的事情。

2 个答案:

答案 0 :(得分:1)

在大多数现代机器中,字符数据被管理为8位字节。 (在某些情况下,字符是16或32位,但在这个时刻,这只是混乱。)

如果你看ASCII table,你会看到基本的"拉丁语"字符集:

enter image description here

各个字符由8位字节标识,其中(对于基本ASCII字符)高位为零。因此,值介于0到127之间,或介于00和7F十六进制之间(或介于00000000和01111111二进制之间)。

我应该在这里注意,前32个代码是"控制字符"的非打印代码。例如,十进制10或十六进制0A的代码是"换行"代码,这是C和Java中已知的代码" newline"。 00代码是" NUL"字符如下所述。

句子中的字符按顺序排列在内存中,以连续的字节排列。因此,"你好"将是48 65 6C 6C 6F十六进制。对于C和C ++来说,一个简单的" C字符串"总是以一个全零的字节结束(图表中的" NUL"字符)。对于Java,字符串的长度在其他地方的单独变量中。一些字符编码方案"前缀"字符串,其长度为8位或16位值。

如上所示,ASCII字符集包括非字母字符,例如!+以及?。对于"非拉丁文"字符(例如,字符£Ç)几种技术中的一种用于"扩展"字符集。有时,那些值为128到255的8位字符用于表示给定语言的非拉丁字符(尽管必须知道哪种语言才能知道正在表示哪组字符)。在其他情况下" Unicode"使用16位或32位字符而不是8位字符,因此几乎每种语言中的每个字符都有自己唯一的代码。

答案 1 :(得分:0)

Binary只是表示数字的另一种方式。它的基数为2,其中十进制为10,十六进制为16。当人们参考"二进制代码"时,它们通常只是编译程序代码,即机器代码。

Machine code只是二进制,因为在低级别它被存储为一系列二进制数字(位)。但是,当任何人看到它时,他们使用十六进制编辑器以十六进制查看它,这比阅读二进制文件要容易得多。

更容易将它拆解为汇编语言,汇编语言将数字替换为它们所代表的指令的名称。

来自维基百科的a good example,其解释了这些二进制数字如何:

10110000 01100001

可以用十六进制表示

B0 61

可以翻译成这个程序集:

MOV AL, 61h       ; Load AL with 97 decimal (61 hex)
相关问题