为什么EXE不是二进制文件?

jma*_*erx 9 c++ binary executable machine-code

为什么如果你在十六进制编辑器中打开一个EXE,你会看到各种各样的东西.如果计算机只能理解二进制文件,那么文件中只能看到2个可能的符号吗?谢谢

Mic*_*tta 31

你将内容与代表混淆了.您计算机上的每个文件都可以用二进制(1和0)表示,实际上它通常存储在磁盘(磁性粒子的对齐)或RAM(电荷)上.

您正在使用"十六进制编辑器"查看您的exe,它使用十六进制数字表示内容.这样做是因为它比二进制更容易理解和导航十六进制(比较"FA"到"11111010").

因此十六进制符号"C0"表示与二进制"11000000","C1"=="11000001","C2"=="11000010"相同的值,依此类推.


Kla*_*aim 15

十六进制值是内存中的二进制值.该软件只会让人类更具可读性.

0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = 10 A
1011 = 11 B
1100 = 12 C
1101 = 13 D
1110 = 14 E
1111 = 15 F.

  • @ user146780:每个十六进制数字值四个二进制位.这是字节的两个位置值.例如,大写字母J的ASCII代码是"4A".如果代码中存在可编辑字符,大多数十六进制编辑器也会显示可打印字符. (2认同)

T.J*_*der 7

计算机只懂二进制,这是一个误解.在最低,最低,最低级别,是的,数字计算机中的数据是一系列的1和0.但是计算机CPU将这些位组合成字节,字,双字,q字等.现代CPU处理的基本单元是双字或双字,而不是一点.这就是他们被称为32位或64位处理器的原因.如果你想让它们只使用一个位,你最终会包含31或63个无关位.(当你开始处理标志寄存器时,它会变得有点模糊.)

从8位处理器开始,数字计算机确实自成一体,因此十六进制成为一种非常有用的显示格式,因为它简洁地表示两个字符的字节(8位).您正在使用十六进制编辑器,因此它显示十六进制,并且由于这个早期的字节方向,它每8位显示两个字符.不过,它主要是展示品; 虽然文件系统通常在字节粒度上用于实际数据(并且存储分配粒度大得多,几乎总是4k),但是每16位不能为每4位或4个字符显示一个字符.或者更多).