1、C++编程概述

news2024/11/17 7:51:18

文章目录

  • 一、基本概念
  • 二、数据的表示及运算
    • 计算机中数据表示
    • 进制间相互转化
    • 二进制计算规则
  • 三、计算机数据的存储单位
  • 四、机器数和码制
  • 五、机器数运算
    • 机器数的加减运算
    • 机器数的乘除运算

面向对象编程语言把事物看成是具有属性和行为的对象,然后通过抽象找出属于同一类的事物的属性和行为,就形成了类。通过类得继承和多态可以很好的实现代码复用,提高软件开发效率。
结构化程序设计方法,它的设计思路是,自上而下,逐步细化,将程序结构按功能分成多个模块,每个模块可能又会分成多个模块,这样就形成了一个模块的树状结构,各个模块间的关系尽可能简单,功能上相对独立。每个模块都是由顺序、选择和循环三种基本结构组成。这种方法就将一个复杂的程序设计问题分成很多简单细化的子问题,更便于开发维护。但是这种方法的缺点是数据和处理数据的方法各自独立,如果数据结构改变,所有相关的方法都要改变。
面对对象设计方法,它将数据和方法放到一个整体里,这个整体就叫对象,同类型对象抽象成类,类中大部分数据只能用本类中的方法处理,类通过简单的外部接口与外界发生关系,而内部的各种关系对外部是透明的。

一、基本概念

  1. 对象
    每个对象都是描述客观存在事物的一个实体,都是由数据和方法(也可以叫属性和行为)构成。属性是描述事物特征的数据,行为描述对对象属性的一些操作。

  2. 类是具有相同属性和行为的一些对象的集合,它为所有属于这个类的对象提供抽象的描述,比如麻雀和杜鹃都可以看作是对象,而鸟就可以看作类。
  3. 封装
    封装就是把对象的所有属性和行为结合成一个独立的单位,对外隐藏对象的内部细节,只保留有几个接口与外界联系。
  4. 继承
    一个类(叫做子类)可以通过继承另一个类(叫做父类)来拥有另一个类的所有属性和行为。比如车和汽车,汽车从车继承,车的所有属性和行为都继承到了汽车上。
  5. 多态性
    多态性就是说父类中的属性和行为被子类继承后,子类可以有自己不同于父类的属性或行为。比如定义一个类“动物”,它具有“吃”这个行为,但是具体怎么吃吃什么,不知道,因为不知道到底是个什么“动物”,如果从这个类继承出子类“羊”和“老虎”,“吃”就成了具体的行为,怎么吃吃什么就都知道了。

二、数据的表示及运算

计算机中数据表示

计算机内部,数值、文字、声音、图形图像等各种信息都必须经过数字化编码后才能被传送、存储和处理。编码就是采用少量的基本符号,选用一定的组合原则,来表示大量复杂多样的信息,
常用计数制

进制间相互转化

  1. 十进制与二进制相互转化
    将十进制转换魏二进制时,整数部分和小数部分分别转换,然后合并。十进制整数转换为二进制整数的方法是“除2取余”,先出低位最后得高位;十进制小数转换为二进制小数的方法是“乘2取整”,先得高位再得低位。
    如: 175.7187 5 10 175.71875_{10} 175.7187510转换为二进制为 10101111.1011 1 2 10101111.10111_2 10101111.101112
    在熟悉2的整数幂次情况下,可将十进制数写成按二进制数权的大小展开的多项式,按权值从高到低依次取各项的系数就可得到相应的二进制数。
    175.7187 5 10 = 2 7 + 2 7 + 2 5 + 2 3 + 2 2 + 2 1 + 2 0 + 2 − 1 + 2 − 3 + 2 − 4 = 10101111.1011 1 2 175.71875_{10}=2^7+ 2^7+2^5+2^3+2^2+2^1+2^0+2^{-1}+2^{-3}+2^{-4}=10101111.10111_2 175.7187510=27+27+25+23+22+21+20+21+23+24=10101111.101112
    二进制转换为十进制的方法:将二进制数的每一位数乘以它的权,然后相加,即可得到相对应的十进制。
  2. 八进制计数法与十进制、二进制计数法的相互转换
    十进制转八进制:对于十进制整数部分采用“除8取余”的方法转换为八进制整数;对于十进制小数则采用“乘8取整”的方法转换为八进制小数。
    二进制数据转换成八进制数的方法是:从小数点起,每三位二进制位分成一组(不足3位时,在小数点左边时左边补0,在小数点右边时右边补0),然后写出每一组的等值八进制数。顺序排列起来就得到所要求的八进制数。
    八进制转二进制:将一位8进制用三位二进制数表示,就可以直接将八进制数转换成二进制。
    二进制、八进制和hi十六进制之间的对应关系
  3. 十六进制计数法与十进制、二进制计数法的相互转换
    十进制转十六进制:十进制数的整数部分“除16取余”,十进制数的小数部分“乘16取整”。
    二进制转十六进制:4位二进制对应1位16进制。
    10101111.1011 1 2 = A F . B 8 16 10101111.10111_2=AF.B8_{16} 10101111.101112=AF.B816

二进制计算规则

  • 加法:二进制加法的进位规则是“逢二进一”
  • 减法:二进制减法的借位规则是“借一当二”
  • 乘法
    0 × 0 = 0 0\times0=0 0×0=0 1 × 0 = 0 1\times0=0 1×0=0 0 × 1 = 0 0\times1=0 0×1=0 1 × 1 = 1 1\times1=1 1×1=1

三、计算机数据的存储单位


  1. 这是数据的最小单位,表示一位二进制数据。
  2. 字节
    由八位二进制数据组成。字节是数据存储中最常用的基本单位。我们常说内存有2G,这里的单位就是字节。1K等于1024字节,1M等于1024K,1G等于1024M。

  3. 位的组合,作为一个独立的信息单位处理。取决于机器的类型、字长及使用者的要求。常用的固定字长有8位、16位、32位等。
  4. 机器字长
    讨论信息单位时,有个与机器硬件指标有关的单位就是机器字长,一般指参加运算的寄存器所含有的二进制数的位数,它代表了机器的精度,如32位、64位等。就是我们常说的32位机器还是64位机器。

四、机器数和码制

对于带符号数,机器数的最高位是表示正、负的符号位,其余则表示数值。若约定小数点的位置在机器数的最低数值位之后,则是纯整数;若小数点的位置在机器数的最高数值位之前(符号位之后),则是纯小数。无符号数是指全部二进制位均代表数值,没有符号位。
带符号的机器数可以采用原码、反码和补码、移码等不同得编码方式。

  1. 原码表示
    数值X得原码记为 [ X ] 原 [X]_原 [X]如果机器字长为n,则最高位是符号位,0表示正好,1表示负号,其余的n-1位表示数值的绝对值。数值零的原码表示有两种形式: [ + 0 ] 原 = 00000000 , [ − 0 ] 原 = 10000000 [+0]_原=00000000,[-0]_原=10000000 [+0]=00000000[0]=10000000
  2. 反码表示
    数值X的反码记为 [ X ] 反 [X]_反 [X]如果机器字长为n,则最高位是符号位,0表示正好,1表示负号,其余的n-1位表示数值。
    正数的反码与原码相同,负数的反码则是其绝对值按位求反。
    数值零的反码表示有两种形式: [ + 0 ] 反 = 00000000 , [ − 0 ] 反 = 11111111 [+0]_反=00000000,[-0]_反=11111111 [+0]=00000000[0]=11111111
  3. 补码表示
    数值X的补码记为 [ X ] 补 [X]_补 [X]如果机器字长为n,则最高位是符号位,0表示正好,1表示负号,其余的n-1位表示数值。
    正数的补码与其反码和原码相同,负数的补码则等于其反码的末尾加1。
    在补码表示中,0有唯一的编码: [ + 0 ] 补 = 00000000 , [ − 0 ] 补 = 00000000 [+0]_补=00000000,[-0]_补=00000000 [+0]=00000000[0]=00000000
    相对于原码和反码表示,n位补码表示法有一个例外,当符号位为1而数值位全部为0时,它表示整数 2 n − 1 2^{n-1} 2n1,即此时符号位的1即表示负数又表示数值。
  4. 移码表示
    移码表示法是在数X上增加一个偏移量来定义的,常用于表示浮点数中的阶码。是基于补码来进行计算。
    如果机器字长为n,在偏移量为2^(n-1)时,只要将补码的符号位取反即可获得相应的移码表示。

五、机器数运算

机器数的加减运算

在计算机中,可以只设置加法器,而将减法器运算转换为加法运算来实现。

  1. 原码加减法
    先确定符号位,符号位相同则加数值为进行运算;符号位不同则比较数值位绝对值,取绝对值大的符号位,然后用绝对值大的减去绝对值小的。
    在计算机中很少使用原码计算。
  2. 补码加减法
    补码加法: [ X + Y ] 补 = [ X ] 补 + [ Y ] 补 [X+Y]_补=[X]_补+[Y]_补 [X+Y]=[X]+[Y]
    补码的减法:差的补码等于被减数的补码加上减数取负后的补码,即: [ X − Y ] 补 = [ X ] 补 + [ − Y ] 补 [X-Y]_补=[X]_补+[-Y]_补 [XY]=[X]+[Y]
    由[X]_补求[-X]_补的方法是:[X]_补的各位取反(包括符号位),末尾加1。

补码加减运算的规则如下:

  • 参加运算的操作数用补码表示。
  • 符号位参加运算。
  • 若进行相加运算,则两个数的补码直接相加;若进行相减运算,则将减数连同其符号位一起变反后加1后于被减数相加。
  • 运算结果用补码表示。

机器数的乘除运算

  1. 纯软件方案。
  2. 在现有的能够完成加减运算的算数逻辑单元ALU的基础上,通过增加少量的实现左、右移动的逻辑电路,来实现乘除运算。
  3. 设置专门的硬件阵列乘法器(或除法器),完成乘(除)法运算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1716911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 Coze 从 0-1 搭建专属 小白的Bot 机器人

基于 Coze 从 0-1 搭建专属 小白的Bot 机器人 ​ 作为一个GIS从业人员,对于AI的使用是必不可少的,在过去的一两年里各种大模型频出,AI技术已经成为GIS领域的一项重要工具,为我们提供了许多强大的功能和解决方案。看到好文章都在介…

深入了解python的关键字“break”与循环退出策略

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、break关键字的基础理解与用途 二、通过案例理解break的应用 三、总结break在编程中的实…

【刷题(12)】图论

一、图论问题基础 在 LeetCode 中,「岛屿问题」是一个系列系列问题,比如: 岛屿数量 (Easy)岛屿的周长 (Easy)岛屿的最大面积 (Medium)最大人工岛 (Hard&…

学习Java的日子 Day48 函数,DOM

Day48 1.流程控制语句 if else for for-in(遍历数组时,跟Java是否一样) While do while break 语句用于跳出循环 continue 用于跳过循环中的一个迭代 2.函数 2.1 JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function funct…

GD32F103系列单片机片上FLASH和ARM介绍

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 后续项目主要在下面该专栏中发布: 手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转: 手把手教你嵌入式国产化-实战项目-无刷电机驱动&am…

Java常见集合类二(Set)

一、Collection接口及其常见实现子类、子接口 1. List接口 2. Set 接口 Set 集合时无序,不可重复的,此处的无序指插入的顺序和遍历得到的顺序不一定相同;Set 最大的功能就是对集合中的元素进行去重,由于Set 继承自 Collection …

我想说这12张是可视化大屏颜值天花板,谁赞成?谁反对?

分享12张可视化大屏,都是大厂出品的,果真是非同凡响。

Simulink从0搭建模型07-P8for循环的使用

Simulink从0搭建模型07-P8for循环的使用 今日学习内容1. For Iterator Subsystem模块介绍1.1. 累加器1.2. For Iterator1.3.小结 2. states介绍3. Set next i(相当break)学习心得 今日学习内容 b站视频 【Simulink 0基础入门教程 P8 for循环的使用 For Itrator Sub…

【精品】typescript 数组去重

简单数组去重 <script lang"ts" setup> const array [1, 2, 1, 3, 3, 4, 1, 5];const set new Set(array); const res1 [...set]; console.info(res1); const res2 Array.from(set); console.info(res2); </script>结果&#xff1a; 类声明 inte…

【ai】livekit:Agents 4: livekit-plugins-openai和LiveKit Plugins Silero安装与分析

先提高下性能然后本文 继续按照 上一篇【ai】livekit:Agents 3 : pythonsdk和livekit-agent的可编辑模式下的安装构建 livekit-gent的插件。pycharm 工程 配置Microsoft Defender 排除列表 livekit-plugins-openai 本地安装

3D模型展示适合哪些类型的产品?

3D模型展示特别适合那些需要全面展示产品细节和特性的商品&#xff0c;产品3D交互展示具有直观性、动态性、交互性等显著优势&#xff0c;可以通过51建模网一站式完成商品3D建模、3D展示、3D定制、AR试穿等功能&#xff0c;以下是一些适合使用3D模型展示的产品类型&#xff1a;…

【实战JVM】-基础篇-01-JVM通识-字节码详解

【实战JVM】-基础篇-01-JVM通识-字节码详解-类的声明周期-加载器 1 初识JVM1.1 什么是JVM1.2 JVM的功能1.2.1 即时编译 1.3 常见JVM 2 字节码文件详解2.1 Java虚拟机的组成2.2 字节码文件的组成2.2.1 正确打开字节码文件2.2.2 字节码组成2.2.3 基础信息2.2.3.1 魔数2.2.3.1 主副…

Reddit是什么?跨境独立站卖家如何用Reddit营销?

在互联网时代&#xff0c;社交媒体营销已成为品牌推广的重要手段。Reddit&#xff0c;作为一个充满活力的社区平台&#xff0c;正逐渐受到越来越多跨境独立站卖家的关注。如果你在独立站引流方面遇到瓶颈&#xff0c;不妨了解一下Reddit这个平台。本文将介绍Reddit是什么&#…

如何让物理服务器可以运行多个虚拟机:VMware ESXi系统安装-详细介绍

目录 一、虚拟机&#xff08;比如VMware ESXi上的虚拟机&#xff09;及其优势 &#xff08;一&#xff09;虚拟机 &#xff08;二&#xff09;虚拟机应用和优势 1、硬件资源利用率提升 2、灵活性和可扩展性 3、高可用性 4、简化管理 5、绿色节能 6、快速响应业务需求 …

【Unity AR开发插件】五、运行示例程序

专栏 本专栏将介绍如何使用这个支持热更的AR开发插件&#xff0c;快速地开发AR应用。 链接&#xff1a; Unity开发AR系列 热更数据制作&#xff1a;制作热更数据-AR图片识别场景 插件简介 通过热更技术实现动态地加载AR场景&#xff0c;简化了AR开发流程&#xff0c;让用户可…

SOLIDWORKS 2024:零件亮点的升级与突破

随着科技的不断发展&#xff0c;工程设计软件也在持续进步&#xff0c;以更好地满足工程师和设计师的需求。SOLIDWORKS&#xff0c;作为一款广泛使用的三维CAD软件&#xff0c;一直在不断地推出新版本&#xff0c;以提供更强大、更便捷的功能。今天&#xff0c;我们将深入探讨S…

AI绘画原理是什么?现阶段好用的AI绘画软件又有哪些呢?

AI绘画工具是一种基于人工智能技术&#xff0c;通过计算机程序自动生成艺术作品的软件。这些工具能够根据用户的输入或预设的条件&#xff0c;创作出具有艺术感的图像&#xff0c;极大地降低了绘画和设计的门槛&#xff0c;提高了创作效率和质量。 AI绘画的原理是什么呢&#…

static静态变量

概述 static是静态的意思&#xff0c;我的理解就是在一个类中创建一个变量或者方法&#xff0c;而这个变量或者方法是属于公共的可以直接通过这个类访问这个变量或者这个方法。 访问的方式 类名.static的变量名 类名.static的方法名 static变量 这里我写了一个小demo用来调…

车辆相关识别API优化您的车辆系统

车辆相关识别API是开发者们所需的重要工具&#xff0c;它们基于先进的计算机视觉和深度学习技术&#xff0c;提供了强大的车辆识别和分类能力。这些API能够从图像或视频中快速准确地识别和提取车辆的关键信息&#xff0c;如车辆型号、品牌、颜色等。对于开发者而言&#xff0c;…

在 iCloud.com 上导入、导出或打印联系人

想将iPhone上的电话本备份一份到本地电脑上&#xff0c;发现iTunes好像只是音乐播放了&#xff0c;不再支持像电话本等功能&#xff0c;也不想通过其他第三方软件&#xff0c;好在可以通过iCloud进行导入导出。下面只是对操作过程进行一个图片记录而已&#xff0c;文字说明可以…