跳转至

1、计算机基础与编程环境

计算机基础包括计算机硬件计算机软件两部分。计算机硬件是指计算机的物理部分,包括计算机主机、显示器、键盘、鼠标、硬盘、内存等等;计算机软件是指计算机系统中的各种程序,包括操作系统、应用软件、编程语言等等。

编程环境是指用于编写、调试和运行计算机程序的工具和软件。常用的编程环境包括集成开发环境(Integrated Development Environment,简称IDE)、文本编辑器、调试器等。IDE是一种集成了编辑器、编译器、调试器等多种功能于一体的软件,可以方便地编写、调试和运行程序。文本编辑器则是一种简单的编辑程序,主要用于编辑代码。调试器则用于程序调试,可以帮助程序员找出程序中的错误和bug。

​ 常用的编程语言包括C、C++、Java、Python等等,每种编程语言都有其特定的编程环境和工具。编程语言的选择取决于具体的应用场景和开发需求。例如,C语言适用于编写系统软件和底层驱动程序,Java适用于编写企业级应用程序,Python则适用于编写数据分析和科学计算等应用程序。

​ 总之,了解计算机基础和选择适合的编程环境和编程语言是进行编程开发的基础,对于学习和掌握计算机编程技能至关重要。

1.1 计算机的基本构成

​ 计算机是一种能够自动执行指令进行数据处理的电子设备。它的基本构成包括以下几个部分:

​ 1.中央处理器(CPU):负责执行指令和控制计算机的运行。CPU是计算机的核心部件,包括运算器和控制器两个主要部分。

​ 2.内存(Memory):用于存储计算机正在运行的程序和数据。内存分为主存储器(RAM)和辅助存储器(硬盘、光盘、U盘等)两种形式。

​ 3.输入设备:用于向计算机输入数据和指令,例如键盘、鼠标、扫描仪等。

​ 4.输出设备:用于向用户输出计算机处理后的数据和结果,例如显示器、打印机、音响等。

​ 5.总线(Bus):用于将计算机各个部件之间的数据和指令传递。

​ 以上是计算机的基本构成部分,不同类型的计算机在实现时可能会有所差异,但基本原理是相同的。

1.2 Windows、Linux 、MacOS等操作系统的基本概念及其常见操作

​ 操作系统是计算机硬件与应用程序之间的中间层,为用户提供了统一的接口,使得用户可以方便地使用计算机。常见的操作系统有Windows、Linux和MacOS。

​ 一、Windows是由微软公司开发的操作系统,它是世界上使用最广泛的个人电脑操作系统之一。Windows操作系统的常见操作包括:

​ 1.桌面:Windows的桌面是用户与操作系统之间的主要交互界面,可以通过桌面上的图标启动应用程序、打开文件夹等。

​ 2.任务栏:Windows的任务栏显示正在运行的应用程序和系统状态信息,可以方便地切换和管理多个应用程序。

​ 3.文件资源管理器:Windows的文件资源管理器用于浏览、管理文件和文件夹,可以方便地对文件进行复制、剪切、粘贴、重命名等操作。

​ 4.控制面板:Windows的控制面板提供了系统设置和管理工具,例如调整屏幕分辨率、安装或卸载应用程序、管理设备驱动等。

二、Linux是一种开源的操作系统,它由全球开源社区共同开发和维护,具有稳定、灵活、安全等特点。Linux操作系统的常见操作包括:

​ 1.终端:Linux的终端是用户与操作系统之间的主要交互界面,用户可以在终端中使用命令行操作系统。

​ 2.文件管理器:Linux的文件管理器用于浏览、管理文件和文件夹,可以方便地对文件进行复制、剪切、粘贴、重命名等操作。

​ 3.软件包管理器:Linux的软件包管理器用于安装、更新和卸载软件包,用户可以方便地从软件仓库中获取所需的应用程序和工具。

​ 4.系统设置:Linux的系统设置用于配置和管理系统设置和服务,例如配置网络连接、安装和配置打印机、管理用户账户等。

Linux 常见操作的命令

​ Linux是一种基于命令行操作的操作系统,用户可以通过输入各种命令来完成各种任务。下面列举了一些Linux常见操作的命令:

  1. ls:列出当前目录下的文件和文件夹。
  2. cd:切换当前工作目录。
  3. mkdir:创建一个新的目录。
  4. rmdir:删除一个空的目录。
  5. rm:删除一个文件或目录。
  6. cp:复制文件或目录。
  7. mv:移动或重命名文件或目录。
  8. cat:显示文件的内容。
  9. less:以分页的方式显示文件内容。
  10. head:显示文件的前几行。
  11. tail:显示文件的后几行。
  12. grep:在文件中查找匹配的文本。
  13. ps:显示当前系统中运行的进程。
  14. top:实时显示系统的资源使用情况。
  15. kill:终止一个进程。
  16. ping:测试网络连接是否正常。
  17. ifconfig:显示网络接口的配置信息。
  18. apt-get:用于在Debian和Ubuntu系统中安装、更新和卸载软件包。
  19. yum:用于在Red Hat和CentOS系统中安装、更新和卸载软件包。
  20. systemctl:用于启动、停止和管理系统服务。

以上是一些Linux常见操作的命令,可以帮助用户在Linux系统中更方便地进行各种任务。

三、MacOS是由苹果公司开发的操作系统,是运行在苹果公司的Mac电脑上的操作系统。它与Windows和Linux操作系统有很多相似之处,但也有一些独特的特点和操作方式。以下是macOS操作系统的基本概念及常见操作:

  1. Dock:macOS的Dock是一个应用程序快捷方式栏,用户可以将常用的应用程序固定到Dock上以方便快速启动。
  2. Finder:macOS的Finder是一个文件管理器,用于浏览、管理文件和文件夹。用户可以通过Finder进行文件复制、剪切、粘贴、重命名等操作。
  3. Spotlight:macOS的Spotlight是一个快速搜索工具,用户可以通过输入关键字来搜索文件、应用程序、邮件、联系人等。
  4. Mission Control:macOS的Mission Control是一个多任务管理工具,可以让用户方便地管理多个应用程序和窗口。
  5. Time Machine:macOS的Time Machine是一个备份工具,可以定期备份用户的数据和文件,以防数据丢失。
  6. Siri:macOS的Siri是一个语音助手,可以让用户通过语音命令来执行各种任务,例如打开应用程序、发送邮件、设置提醒等。
  7. 窗口管理:macOS的窗口管理方式与其他操作系统不同,例如用户可以通过拖动窗口来改变大小,通过双击标题栏将窗口最大化等。
  8. 应用程序安装:macOS的应用程序通常以.dmg格式分发,用户可以双击.dmg文件来安装应用程序。安装完成后,应用程序通常被放置在/Applications目录下。

1.3 计算机网络和Internet的基本概念

​ 计算机网络是指将多台计算机互相连接起来,以实现数据和资源共享的技术和系统。计算机网络可以分为局域网(LAN)、广域网(WAN)和城域网(MAN)等不同类型,它们之间的区别主要在于范围和连接方式。计算机网络通常由计算机、交换机、路由器、网关等设备组成。

​ 而Internet是指全球范围内互相连接的计算机网络。它是由许多不同的网络组成,这些网络使用标准的Internet协议(TCP/IP协议)相互连接,使得全球范围内的计算机都可以相互通信。Internet的基础设施由Internet服务提供商(ISP)提供,用户可以通过ISP访问Internet。

​ 以下是计算机网络和Internet的一些基本概念:

  1. 协议:在计算机网络中,协议是指用于规范通信的规则和标准。例如,TCP/IP协议是Internet上的标准通信协议,HTTP协议是用于在Web上传输数据的协议。
  2. IP地址:在Internet上,每台计算机都必须拥有一个唯一的IP地址,以便能够互相通信。IP地址通常采用IPv4或IPv6格式,例如192.168.1.1。
  3. 域名:为了方便用户记忆和使用,计算机网络中还存在域名这一概念。域名是一个与IP地址相对应的人类可读的字符串,例如www.google.com。
  4. 网络拓扑:网络拓扑指网络中各个设备之间的连接关系。常见的网络拓扑有星型拓扑、总线拓扑、环形拓扑等。
  5. 传输介质:计算机网络中数据的传输需要一些物理介质来传递信号。常见的传输介质有双绞线、光纤、无线电波等。
  6. 网络安全:在计算机网络中,网络安全是一个非常重要的问题。网络安全包括数据加密、身份验证、防火墙、入侵检测等措施,以保证网络中的数据和资源不被非法访问和攻击。

1.4 计算机的历史及其再现代社会中的常见应用

​ 计算机是一种以数字方式进行计算、存储和处理信息的电子设备。计算机历史可以追溯到数百年前的计算设备,但是真正的计算机始于20世纪初的机械计算机。以下是计算机历史的详细描述:

1.机械计算机时代(1623-1945)

​ 最早的计算设备可以追溯到17世纪的帕斯卡计算器,这是一种手动的机械计算设备,用于加、减、乘和除。在19世纪,查尔斯·巴贝奇设计了一种机械计算机——分析机,用于处理数学问题。分析机从未真正完工,但是巴贝奇的设计为后来的计算机奠定了基础。

​ 20世纪初,机械计算机开始出现商业市场上。最早的商业机械计算机是Tabulating Machine Company(后来的IBM)的产品,用于进行人口普查和工资计算等任务。接着,在二战期间,机械计算机被广泛用于军事目的,例如破解密码和计算弹道。

2.电子计算机时代(1945-现在)

​ 1945年,ENIAC(Electronic Numerical Integrator and Computer)诞生,它是世界上第一台电子计算机,由约翰·冯·诺伊曼设计。ENIAC用于进行科学计算,例如计算导弹弹道。然而,ENIAC的巨大体积和高昂的成本限制了它的使用。

​ 1951年,第一台商业电子计算机——UNIVAC(Universal Automatic Computer)问世。UNIVAC被用于进行商业和政府任务,例如选举预测和经济分析。从此以后,电子计算机逐渐普及,成为商业和科学计算的主要工具。

​ 1960年代,IBM开发了第一台大型计算机——System/360。System/360是可编程的,可以处理多个任务,并且具有向下兼容性,这意味着用户可以继续使用旧的软件和硬件。System/360的开发使得计算机成为了一个庞大的工业。

​ 1970年代,个人计算机开始出现。1971年,英特尔推出了第一款微处理器,这是一种集成了CPU的芯片。1975年,比尔·盖茨和保罗·艾伦开发了微软公司的第一款基于微处理器的操作系统——Altair BASIC,这是第一款面向个人计算机的操作系统。

​ 1980年代,个人计算机开始普及。IBM的PC(个人计算机)标准成为了行业标准,大量的人们开始使用个人计算机进行办公和娱乐活动。1990年代,互联网的发展使得计算机和人们之间的交流变得更加便利。随着网络技术和软件的不断发展,计算机已经成为了现代社会不可或缺的一部分,它在商业、科学、教育、娱乐等各个领域都有广泛的应用。

​ 总的来说,计算机历史的发展是一个漫长而又持续不断的过程,从最初的机械计算器到现在的高性能计算机和人工智能,计算机的发展经历了数百年的变革和创新。如今,计算机已经成为现代社会不可或缺的一部分,它在带给我们便利的同时也为我们提供了无限的可能性和挑战。

以下是几位计算机领域的著名科学家:

  1. 艾伦·图灵(Alan Turing):他是英国计算机科学家、数学家和逻辑学家,被称为“现代计算机科学之父”。他在第二次世界大战期间参与破解纳粹德国的密码,为盟军胜利做出了重要贡献。他还提出了“图灵测试”,这是一种测试人工智能的方法,至今仍然被广泛应用。
  2. 约翰·冯·诺伊曼(John von Neumann):他是匈牙利裔美国数学家和物理学家,被誉为计算机科学和数学的巨匠。他在计算机体系结构和计算机科学的许多领域做出了重要贡献,包括发明现代计算机的基本架构和运算方法。
  3. 蒂姆·伯纳斯-李(Tim Berners-Lee):他是英国的一名计算机科学家,也是万维网的发明者。他在1989年发明了万维网,并创建了第一个网页浏览器和网站。他被认为是现代计算机网络和互联网的创始人之一,也因此获得了许多奖项和荣誉。
  4. 阿兰·凯(Alan Kay):他是美国计算机科学家和教育家,被认为是“面向对象编程”的先驱之一。他是Smalltalk编程语言和Dynabook概念的创始人,这两个概念都对计算机科学和软件开发产生了深远的影响。
  5. 格雷斯·霍珀(Grace Hopper):她是美国的一名计算机科学家,被誉为“计算机编程之母”。她发明了第一个编译器,并为COBOL编程语言的发展做出了重要贡献。她还创造了许多编程术语和标准,如“bug”和“debugging”。

这些科学家对计算机科学和技术的发展做出了巨大的贡献,他们的研究成果和发明对于现代计算机科学和技术的发展产生了深远的影响。

以下是计算机在现代社会中的一些常见应用:

  1. 个人计算机:个人计算机是指专门为个人用户设计的计算机设备,它们通常包括台式机、笔记本电脑、平板电脑等多种形态。个人计算机可以用于办公、学习、娱乐等多种用途。
  2. 互联网:互联网是全球最大的计算机网络,它通过TCP/IP协议连接了全球各地的计算机。互联网上有许多应用和服务,例如电子邮件、在线购物、社交网络、视频和音乐流媒体等。
  3. 移动设备:移动设备是指便携式的计算机设备,例如智能手机和平板电脑。移动设备通常使用移动网络(例如4G和5G网络)进行通信和访问互联网。
  4. 人工智能:人工智能是一种计算机技术,它可以使计算机系统具有智能和学习能力。人工智能已经应用于许多领域,例如自然语言处理、图像识别、自动驾驶等。
  5. 电子商务:电子商务是指使用互联网和计算机技术进行商业活动的方式。电子商务可以通过在线购物网站、电子支付系统、数字营销等方式实现。
  6. 游戏和娱乐:计算机游戏和娱乐是计算机应用领域中最受欢迎和广泛应用的领域之一。计算机游戏和娱乐可以包括电子游戏、虚拟现实、视频和音乐流媒体等。

总之,计算机在现代社会中有着广泛的应用和重要的地位,无论是个人用户还是商业机构,都需要计算机技术来提高效率和改善工作和生活质量。

1.5 NOI以及相关活动的历史

​ IOI,全称为“国际信息学奥林匹克竞赛”(International Olympiad in Informatics),是一项面向全球青少年的计算机科学竞赛。其主要目的是促进计算机科学和信息技术在青少年中的普及和发展,鼓励他们发掘自己的潜力并探索计算机科学领域的更深层次。

​ IOI竞赛始于1989年,由保加利亚、苏联、捷克斯洛伐克、波兰和东德五个国家的代表在保加利亚首都索菲亚举行。此后,每年都会有数十个国家和地区的代表参加该竞赛。IOI的竞赛项目包括算法和程序设计,涉及诸多计算机科学领域,如图论、数据结构、动态规划、贪心算法等。

​ NOI及其相关活动为青少年提供了一个展示自己技能和才能的平台,也为全球青少年之间的交流和合作创造了良好的机会。同时,NOI也推动了计算机科学和技术的普及和发展,为人们的日常生活和社会发展提供了重要的支持和帮助。

NOI:1984年邓小平指出:“计算机的普及要从娃娃做起。”中国计算机学会于1984年创办全国青少年计算机程序设计竞赛(简 称:NOI),即全国青少年信息学奥林匹克竞赛,是国内包括港澳在内的省级代表队最高水平的大赛。

NOIP:全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces简称NOIP)自1995年至今。每年由中国计算机学会统一组织。NOIP在 同一时间、不同地点以各省市为单位由特派员组织。全国统一大纲、统一试卷。初、高中或其他中等专业学校的学生可报名参加联赛。联赛分初赛和复赛 两个阶段。初赛考察通用和实用的计算机科学知识,以笔试为主。复赛为程序设计,须在计算机上调试完成。参加初赛者须达到一定分数线后才有资格参加复赛。联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。

从2005年开始,NOIP不再支持Basic;从2022年开始不再支持Pascal,只有C++。

冬令营:全国青少年信息学奥林匹克冬令营(简称冬令营)自1995年起。每年在寒假期间开展为期一周的培训活动。冬令营共8天,包括授课、 讲座、讨论、测试等。参加冬令营的营员分正式营员和非正式营员。获得NOI前20名的选手和指导教师为正式营员,非正式营员限量自愿报名参加。在冬令营授课的是著名大学的资深教授及已获得国际金牌学生的指导教师。

APIO: 亚洲与太平洋地区信息学奥赛(Asia Pacific Informatics Olympiad)简称(APIO)2007年创建,该竞赛为区域性的网上准同步赛,是亚洲和太平洋地区每年一次的国际性赛事,旨在给青少年提供更多的赛 事机会,推动亚太地区的信息学奥林匹克的发展。APIO每年5月举行,由不同的国家轮流主办。每个参赛团参赛选手上限为100名,其中成绩排在前6名的选 手作为代表该参赛团的正式选手统计成绩。APIO中国赛区由中国计算机学会组织参赛,获奖比例将参照IOI。

选拔赛:选拔参加国际信息学奥林匹克中国代表队的竞赛(简称选拔赛)。IOI的选手是从获NOI前20名选手中选拔出来的,获得前4名的优胜者代表中国参加国际竞赛。选拔科目包括:NOI成绩、冬令营成绩、论文和答辩、平时作业、选拔赛成绩、口试。上述项目加权产生最后成绩。

IOI: 出国参加国际信息学奥林匹克竞赛(International Olympiad in Informatics)简称(IOI)。由中国计算机学会组织代表队,代表中国参加国际每年一次的IOI。中国是IOI创始国之一。IOI2000由中国主办,CCF承办。出国参赛得到中国科协和国家自然科学基金委的资助。  

​ 自1989年开始,我国在NOI(网上同步赛99年开始)、NOIP、冬令营、选拔赛的基础上,组织参加国际信息学奥林匹克(IOI)竞赛。十几年中选拔75人次参加了 IOI,累计获金牌46块、银牌17块,铜牌12块。这些选手不仅在国际大赛中有好的表现,而且在现代的信息学科上也大展才华。中国已成为世界公认的信息 学奥林匹克竞赛强国,参赛选手、领队、教练曾受到江泽民、李鹏、李岚清等党和国家领导人及著名科学家的亲切接见和赞扬。

CCSP:大学生计算机系统与程序设计竞赛,由中国计算机学会(CCF)于2016年发起的一个面向大学生的竞赛,每年举办一次,考察的是算法、编程以及计算机系统设计能力,旨在进一步提高计算机教育质量,使学生通过竞赛进一步学习和掌握计算机系统知识,同时对高校计算机教育产生引领作用。

CSP:中国计算机学会于2014年推出CCF计算机软件能力认证,该项认证重点考察软件开发者实际编程能力,由中国计算机学会统一命题、统一评测,委托各地设立的考试机构进行认证考试。该项认证每年大约3、9、12月各举办一次。认证者不限年龄,不限学历,不限报考次数,不限国籍 ,在报名官网注册账户后均可报名参加认证。语言:C/C++(Dev-CPP 5.4.0 (Min GW 4.7.2)),Java(Eclipse (Java SDK 1.7.0_15)),Python(3.6.5) 浏览器:Chrome。CSP认证考试可以带纸质资料进入考场,不过只能是常用语言的程序设计基础书、数据结构的相关书籍。不允许U盘、手机等电子设备进入考场。

CSP-S/J:CCF非专业级软件能力认证(Certified Software Professional Junior/Senior,简称CSP-J/S)创办于2019年,是由CCF统一组织的评价计算机非专业人士算法和编程能力的活动。在同一时间、不同地点以各省市为单位由CCF授权的省认证组织单位和总负责人组织。全国统一大纲、统一认证题目,任何人均可报名参加。CSP-J/S分两个级别进行,分别为CSP-J(入门级,Junior)和CSP-S(提高级,Senior),两个级别难度不同,均涉及算法和编程。CSP-J/S分第一轮和第二轮两个阶段。第一轮考察通用和实用的计算机科学知识,以笔试为主,部分省市以机试方式认证。第二轮为程序设计,须在计算机上调试完成。第一轮认证成绩优异者进入第二轮认证,第二轮认证结束后,CCF将根据CSP-J/S各组的认证成绩和给定的分数线,颁发认证证书。CSP-J/S成绩优异者,可参加NOI省级选拔,省级选拔成绩优异者可参加NOI。

1.6 进制的基本概念与进制转换、字节与字

进制的基本概念:

​ 进制是一种数的表示方式,用于表示数字在计算机中的存储和运算。在计算机中,二进制是最基本的进制方式,常用的还有十进制、八进制和十六进制。每种进制有其独特的表示方法和规则。

​ 二进制是计算机最基本的进制方式,只包含数字0和1,是所有计算机数据的基本形式。八进制和十六进制是二进制的衍生进制,能够更方便地表示和操作二进制数据。十进制是人类最熟悉的进制方式,我们平时使用的数字就是十进制。

进制转换:

​ 进制转换是指将一个进制的数转换为另一个进制的数。常用的是二进制、八进制、十进制和十六进制之间的转换。具体的转换方法可以用除法取余法、乘法加减法等方式实现。

​ 例如,将十进制数12转换为二进制数,可以使用除法取余法,即将12除以2,得到商6和余数0,再将商6除以2,得到商3和余数0,继续将商3除以2,得到商1和余数1,最后将商1和余数1组成二进制数1100,即为12的二进制表示。

字节和字:

​ 字节是计算机中存储数据的最小单位,通常由8位二进制数构成,可以存储一个字符或一个二进制数。字节的缩写是B,常用的单位有千字节(KB)、兆字节(MB)、吉字节(GB)等(210 = 1024)。

​ 字是计算机中数据存储的单位,通常由多个字节组成。在不同的计算机架构中,一个字的长度可以不同,例如16位计算机中一个字为2个字节,32位计算机中一个字为4个字节。字的缩写是W,常用的单位有千字(KW)、兆字(MW)等。

位:

​ 位是计算机处理和存储信息的基本单位,是计算机能够识别和处理数字的基础。计算机中所有的数据都以二进制位的形式进行存储和运算,例如字符、图像、声音等都是以二进制位的形式存储的。位的取值只有0和1两个,代表了开关的开和关,计算机能够根据这两个状态进行运算和判断。

​ 在计算机中,位通常用来表示电子开关的状态。电子开关只有两个状态,分别是开和关,也就是可以用0和1来表示。计算机内部的运算和逻辑判断都是通过对位进行操作来实现的。

位的运算和处理:

​ 计算机能够对位进行不同的运算和处理,包括位的与、或、异或、取反、左移、右移等操作。其中,位的与、或、异或是逻辑运算,取反、左移、右移是移位运算。这些运算和处理方式能够实现各种复杂的计算和数据处理操作,例如加减乘除、比较大小、逻辑判断等。

​ 总之,位作为计算机处理和存储信息的最小单位,是计算机能够识别和处理数字的基础。位的运算和处理方式能够实现各种复杂的计算和数据处理操作,是计算机内部运行的基础。

原码、反码、补码、移码:

​ 原码、反码、补码、移码都是二进制数的表示方法,常见于计算机中对二进制数的运算、存储和传输。

  • 原码是最基本的表示方法,将一个数的符号位和数值部分分别表示在不同位数的二进制数中。例如,一个 8 位二进制数中,第一位表示符号,后面 7 位表示数值。+7 的原码为 00000111,-7 的原码为 10000111。
  • 反码是对原码的一种修改,将正数的反码与原码相同,而负数的反码则将数值部分按位取反。例如,+7 的反码与原码相同为 00000111,-7 的反码为 11111000。
  • 补码是对反码的一种修改,将正数的补码与原码相同,而负数的补码则将数值部分按位取反,并在最后一位加 1。例如,+7 的补码与原码相同为 00000111,-7 的补码为 11111001。
  • 移码是一种将补码的符号位与数值部分都向左移动一个位置,再在最右侧补 0 的表示方法。

​ 移码是一种数值表示方法,它在计算机科学中有广泛应用。在移码表示法中,数值用两部分来表示,一部分是符号位,另一部分是数值部分。符号位用来表示数值的正负,而数值部分用来表示数值的大小。

​ 移码的表示方法与二进制补码类似,只不过它将最高位的符号位取反,用于表示正负。具体来说,移码表示法中,正数的符号位为0,负数的符号位为1,数值部分与二进制补码相同。

​ 移码的优点在于,可以使计算机更容易处理符号数值的加减运算。在移码表示法中,数值的加减运算可以通过计算机的硬件电路来完成,不需要使用软件算法进行转换。这样可以提高计算速度和精度,同时也减少了硬件电路的复杂性。

​ 不过,移码表示法的缺点是它的符号位可能会引起一些问题,例如当数值发生溢出时。在移码表示法中,数值的加减运算可能会导致符号位发生改变,从而影响数值的正确性。因此,在使用移码表示法时,需要注意一些细节问题。

​ 在计算机中,通常使用补码表示有符号整数,因为补码具有唯一的表示,且可以用相同的运算规则处理正数和负数。

1.7 程序设计语言以及程序编译和运行的基本概念

​ 程序设计语言是一种用于编写计算机程序的语言,可以通过编写程序来实现计算机所需的各种功能。程序设计语言可以按照不同的分类标准进行分类,例如根据语言的抽象级别、应用领域、语言的类型等。下面是程序设计语言的一些常见分类:

  1. 根据语言的抽象级别:

  2. 低级语言:包括汇编语言和机器语言,直接面向计算机硬件,控制能力强,但易于出错。

  3. 高级语言:抽象程度较高,使用自然语言和符号来描述程序,例如C、Java、Python、Ruby等。

​ 高级语言是指使用自然语言(如英语)和符号来描述计算机程序的语言,例如C、Java、Python等。这些语言可以提高程序员的工作效率,因为它们更接近于人类的自然语言,程序员可以更快速、更准确地编写出复杂的程序。而低级语言则更接近于计算机底层的机器语言,例如汇编语言,这些语言更难学习和使用,但是可以更直接地控制计算机的硬件资源。

  1. 根据应用领域:

  2. 通用语言:可以用于各种不同领域的应用,例如C、Java等。

  3. 领域特定语言(Domain-Specific Language,DSL):针对某个具体领域设计的语言,例如SQL(用于关系数据库操作)、HTML(用于网页开发)等。

  4. 根据语言的类型:

  5. 编译型语言:编写的程序需要先经过编译器编译,生成可执行程序,例如C、C++等。

  6. 解释型语言:程序在运行时才会被逐行解释执行,例如Python、Ruby等。

  7. 根据语言的范式:

  8. 过程式语言:以过程为基本单位,程序由一组过程构成,例如C语言。

  9. 面向对象语言:以对象为基本单位,程序由一组对象构成,例如Java、Python等。
  10. 函数式语言:函数是基本单位,程序由一组函数构成,例如Lisp、Haskell等。

​ 程序编译是指将高级语言编写的程序转化为机器语言的过程,编译器是实现这一过程的程序。编译器会将高级语言代码翻译成机器语言代码,然后将机器语言代码存储到计算机的内存中,让计算机能够直接运行。

​ 程序运行是指计算机根据编译器生成的机器语言代码执行程序的过程。在程序运行的过程中,计算机会按照机器语言代码指定的步骤进行运算和处理,最终实现程序的功能。

​ 编写程序的基本流程包括:分析问题,设计算法,选择合适的程序设计语言,编写程序,编译程序,运行程序,调试和测试程序,最终发布和使用程序。

​ 总之,程序设计语言是一种用于编写计算机程序的语言,程序编译和运行是将高级语言转化为机器语言并执行的过程。程序员需要掌握程序设计语言的基础知识和编程技巧,以及如何使用编译器和调试工具来完成程序的开发、调试和测试。