编程基础小知识
一、编程语言
编程语言:可以通过”语言“来控制计算机,让计算机为我们做事情的语言
编程语言有很多种,常用的有C语言、C++、Java、C#、Python、PHP、JavaScript、Go语言、Objective-C、Swift、汇编语言等,每种语言都有自己擅长的方面。编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。
源代码:具有特定含义的词汇、语句,按照特定的格式组织在一起,就构成了源代码(Source Code),也称源码或代码(Code)。
语法:C语言肯定规定了源代码中每个词汇、语句的含义,也规定了它们该如何组织在一起,这就是语法(Syntax)
编程:编写源代码的过程就叫做编程(Program)
二、进制
进制:也就是进位制。进行加法运算时逢X进一(满X进一),进行减法运算时借一当X,这就是X进制,这种进制也就包含X个数字,基数为X。十进制有 0~9 共10个数字,基数为10,在加减法运算中,逢十进一,借一当十。
进制运算:进制加减法和十进制加减法的思想是类似的,例如:对于十进制,进行加法运算时逢十进一,进行减法运算时借一当十;对于二进制,进行加法运算时逢二进一,进行减法运算时借一当二。
二进制:用0、1两个数字来表示数值,这就是二进制(Binary
八进制:八进制有 0~7 共8个数字,基数为8,加法运算时逢八进一,减法运算时借一当八
十六进制:十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有 0~F 共16个数字,基数为16,加法运算时逢16进1,减法运算时借1当16。
进制转换:
-
二进制转为十进制
101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625
-
十进制转为二进制
-
整数
-
小数
-
-
二进制整数和八进制整数之间的转换
二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。 1110111100 转换为八进制的结果为 1674
-
二进制整数和十六进制整数之间的转换
二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。 10 1101 0101 1100 转换为十六进制的结果为 2D5C。
三、数据存储
计算机要处理的信息是多种多样的,如数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式来表示
内存条中一个元器件称为1Bit(位),大数据处理时可能会用到PB和EB
1Byte = 8 Bit 1KB = 1024Byte = 210Byte 1MB = 1024KB = 220Byte 1GB = 1024MB = 230Byte 1TB = 1024GB = 240Byte 1PB = 1024TB = 250Byte 1EB = 1024PB = 260Byte
程序的运行实际上就是数据(程序本质就是数据的集合),通过加载器(loader)从硬盘加载到内存中运行
内存>固态硬盘>机械硬盘
虚拟内存:当运行的程序所需空间超过内存时,操作系统解决这个问题,将暂时不用的数据写回硬盘,需要时再写回来。硬盘中存放内存中暂时不用的数据的空间就是虚拟内存。
四、字符编码
字符集:定义了文字和二进制的对应关系,为字符分配了唯一的编号
字符编码:规定了如何将文字的编号存储到计算机中。
ASCII编码:美国人发明的字符编码,标准版本于 1967 年第一次发布,最后一次更新则是在 1986 年,迄今为止共收录了 128 个字符,其中包含了 33 个控制字符(具有某些特殊功能但是无法显示的字符)和 95 个可显示字符。包含了基本的拉丁字母(英文字母)、阿拉伯数字(也就是 1234567890)、标点符号(,.!
等)、特殊符号(@#$%^&
等)以及一些具有控制功能的字符(往往不会显示出来)。
很多人可能认为C语言使用的就是 ASCII 编码,字符在存储时会转换成对应的 ASCII 码值,在读取时也是根据 ASCII 码找到对应的字符。这句话是错误的,C语言有时候使用 ASCII 编码,有时候却不是。
C语言并不总是使用ASCII编码。在C语言中,字符常量被编码为整数值,这些整数值在不同的实现中可能有所不同。 在许多系统中,包括大多数现代系统,C语言使用ASCII编码来表示字符。ASCII编码使用7位二进制数来表示128个字符,包括英文字母、数字和特殊字符。 然而,C语言标准并没有明确规定要使用ASCII编码。根据C语言标准,字符集的选择是实现定义的。因此,不同的编译器和系统可以选择不同的字符集和编码方式。 例如,一些特定的系统可能使用扩展的ASCII编码,如ISO-8859或Windows-1252。还有一些系统使用Unicode编码或其他多字节编码方案,如UTF-8或UTF-16。 因此,在编写C程序时,应该尽量避免假设字符编码为ASCII,并且最好使用与具体实现相关的字符操作函数,例如isalpha()和isdigit(),而不是对具体的ASCII值进行硬编码比较。 总之,虽然在很多系统中C语言使用ASCII编码,但它并不是C语言的唯一字符编码方式,具体的字符集和编码取决于编译器和系统的实现。