- hello.c
#include <stdio.h>
int main(){
printf("hello,world\n");
return 0;
}
hello程序的生命周期是从一个源程序(或者说源文件)开始的,即程序员通过编辑器创建并保存的文本文件,文件名是he11o.c。源程序实际上就是一个由值0和1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。
比特(bit)通常用小写的“b”表示,是信息量的度量单位。
字节(Byte)通常用大写的“B”表示,1 字节等于 8 比特。比特,也称为“位,在二进制数系统中,每一个 0 或 1 都是一个位(bit)。比特是计算机数据存储中的最小单位。
字节,8 个位组成一个字节,1Byte=8bit(1B=8b)
大部分的现代计算机系统都使用ASCII标准来表示文本字符,在 ASCII 标准中,给每一个文本字符都分配了一个特定且唯一的、大小为一个字节(8 位)的整数数值,通过这个整数数值来代表对应的字符。如上面的 C语言程序对应的 ascll 码表示:
在大多数计算机系统中,程序是以字节序列的方式储存在文件中的。每个字节都有一个整数值,对应于某些字符。例如 hello.c
,第一个字节的整数值是 35,它对应的就是字符“#”。第二个字节的整数值为 105,它对应的字符是’i’,依此类推。注意,每个文本行都是以一个看不见的换行符’\n’来结束的,它所对应的整数值为10。像 hello.c
这样只由 ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。
二进制文件是将计算机内存中的数据直接存放到磁盘上,不进行字符编码转换,数据的表示和长度没有固定模式,由具体的应用决定。
文本文件是把数据以字符形式存储到磁盘上,按照一定的字符编码规则,比如 ASCII 码或 Unicode 编码,每个字符通常有固定的字节长度。
二进制文件示例 1. 图像文件:如JPEG、PNG、BMP等格式的图片文件,它们包含了像素颜色值、压缩信息等,这些数据通常不是以可读文本形式存储的。 2. 音频和视频文件:如MP3、WAV、MP4、AVI等格式的媒体文件,它们包含音频波形、视频帧数据以及编解码器信息,这些通常也是二进制数据。 3. 可执行文件:如Windows下的.EXE文件,Linux下的ELF格式文件,这些文件包含了机器代码指令和资源,是二进制格式的。 4. 数据库文件:如SQLite数据库文件,它们存储了结构化的数据,但数据是以二进制形式保存的,直接读取不易理解。 5. 压缩文件:如ZIP、RAR格式的压缩包,它们包含了压缩后的文件数据,通常也是二进制格式。 ### 文本文件示例 1. 纯文本文件:如.txt文件,它们只包含可打印的字符和一些控制字符(如换行符),用于存储易于阅读的文本。 2. 源代码文件:如.java、.cpp、.py等编程语言的源代码文件,它们也属于文本文件,尽管包含的是编程语言的语法而不是自然语言。 3. 配置文件:如.ini、.conf、.json、.xml等,用于存储应用程序的配置信息,通常以文本形式编写,便于手动编辑。 4. 日志文件:如.log文件,记录了程序运行过程中的事件和错误信息,以便于调试和分析,也是文本格式。 5. 网页文件:如.html、.css、.js等网页开发相关的文件,它们包含了HTML、CSS和JavaScript代码,虽然本质上是二进制数据,但通常以文本格式存储,易于编辑和传输。 这些例子展示了不同类型的文件如何基于它们的内容和用途被分类为二进制文件或文本文件。 |
---|
hello.c
的表示方法说明了一个基本思想:系统中所有的信息(包括但不限于磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据 …………),都是由一串比特(一串 0 和 1) 表示的。
区分不同数据对象的唯一方法是读到这些数据对象时的上下文。在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。也就是说,区分有 0 或 1 组成的不同的数据,得看读取这些数据时的具体情况。比如说,同样的一串 0 和 1 ,在不同的情况下,可能表示一个整数,也可能表示一个浮点数、一段字符串或者一条机器指令。