1、C++编程概述


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

一、基本概念

  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. 设置专门的硬件阵列乘法器(或除法器),完成乘(除)法运算。
  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值